Area 是Route中类似命名空间的概念,可以将多个有controller、view、route组成的集合分开,在相对大的项目中比较有用。
1.创建Area
新建一个MVC项目,在解决方案上面右键“添加Area”。
添加后,你会发现解决方案里面多了一个顶级目录Area,下面是一个小的MVC项目。
2.注册Area
在Application_Start()方法里,AreaRegistration.RegisterAllAreas();
3.在地址栏中输入Area/Controller/Action即可访问Area中的Controller等内容。
4.默认情况下,你需要在路由注册里面加入命名空间以防止出现相同名字的Controller混合的问题。
View Code
1 public static void RegisterRoutes(RouteCollection routes) { 2 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 3 routes.MapRoute( 4 "Default", // Route name 5 "{controller}/{action}/{id}", // URL with parameters 6 new { controller = "Home", action = "Index", id = UrlParameter.Optional } 7 ); 8 }
View Code
1 public static void RegisterRoutes(RouteCollection routes) { 2 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 3 routes.MapRoute( 4 "Default", // Route name 5 "{controller}/{action}/{id}", // URL with parameters 6 new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 7 new[] {"WorkingWithAreas.Controllers"} 8 ); 9 }
5.默认情况下,你不需要更改任何地方,@Html.ActionLink()放法会自动检测你当前所在的Area,并将连接到导航到Area内。但如果你需要连接到其他一个Area中,需要写成下面的方法:
View Code
1 381 2 @Html.ActionLink("Click me to go to another area", "Index", new { area = "Support" })
注意,area的值必须是有效的值。