MVC ASP.NET MVC5使用Area区域
一.为什么要使用area?
在大型的ASP.NET mvc5项目中一般都有许多个功能模块,这些功能模块可以用Area(中文翻译为区域)把它们分离开来,比如:Admin,Customer,Bill。ASP.NET MVC项目中把各个功能分为不同Area的之后每一个Area都有独立的Controller,View文件结构。这样可以把这些功能分给不同的开发者同时开发而彼此之间不会冲突,这样的文件结构各司其职,直观明了,易于维护和管理。下面我们看看怎么在ASP.NET MVC5中创建一个Area和Area直接之间链接的处理。 (Mvc 2.0版本引入area的。)
二.配置:
我们来看这个Area是怎么在项目的起作用的。
我们来看Global.asax.cs的代码:
public class Global : HttpApplication { void Application_Start(object sender, EventArgs e) { AreaRegistration.RegisterAllAreas(); BootStrapper.ConfigureDependencies(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); } }
第一行的代码:AreaRegistration.RegisterAllAreas();就是注册 ASP.NET MVC 应用程序中的所有区域。每一个区域它有自己的都有独立的Controller,View文件结构和路由配置,我们完全可以把ASP.NET MVC的区域看成一个ASP.NET MVC项目。
在ASP.NET MVC5的每个区域都有一个类:区域名+AreaRegistration,比如BaseManage区域:
public class BaseManageAreaRegistration : AreaRegistration { public override string AreaName { get { return "BaseManage"; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "BaseManage_default", "BaseManage/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional } ); } }
这个类的作用主要是用于标示区域名称和区域Controller的路由,可以看到路由规则为"BaseManage/{controller}/{action}/{id}",前面统一跟了一个BaseManage。
三.在Area区域的视图之间Action的链接跳转是如何处理?
1.同一个区域跳转:
@Html.ActionLink("Click me", "About")
2.不同区域跳转:
@Html.ActionLink("Click me", "About",new { area = "Support")
3.调整到无区域:
@Html.ActionLink("Click me", "About",new { area = "")