品牌网站建设报价单,百度网络小说排行榜,商业网站定义,站长之家域名查询鹿少女转载#xff1a;http://www.lanhusoft.com/Article/217.html 在大型的ASP.NET mvc5项目中一般都有许多个功能模块#xff0c;这些功能模块可以用Area#xff08;中文翻译为区域#xff09;把它们分离开来#xff0c;比如#xff1a;Admin#xff0c;Customer#xff0c… 转载http://www.lanhusoft.com/Article/217.html 在大型的ASP.NET mvc5项目中一般都有许多个功能模块这些功能模块可以用Area中文翻译为区域把它们分离开来比如AdminCustomerBill。ASP.NET MVC项目中把各个功能分为不同Area的之后每一个Area都有独立的ControllerView文件结构。这样可以把这些功能分给不同的开发者同时开发而彼此之间不会冲突这样的文件结构各司其职直观明了易于维护和管理。下面我们看看怎么在ASP.NET MVC5中创建一个Area和Area直接之间链接的处理。 一、ASP.NET MVC5中创建Area区域 选中我们的ASP.NET MVC项目右键菜单添加》区域这里我们取名为Admin在项目根目录将会生成一个Admin文件夹如下图 我们来看这个Area是怎么在项目的起作用的。 我们来看Global.asax.cs的代码 public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } } 第一行的代码AreaRegistration.RegisterAllAreas();就是注册 ASP.NET MVC 应用程序中的所有区域。每一个区域它有自己的都有独立的ControllerView文件结构和路由配置我们完全可以把ASP.NET MVC的区域看成一个ASP.NET MVC项目。 注意 RouteConfig.RegisterRoutes(RouteTable.Routes)在AreaRegistration.RegisterAllAreas();的后面。这一点很关键你最好是不要改变这个顺序。之前我们谈到过ASP.NET MVC路由系统是按注册路由的先后顺序来匹配的这里RegisterAllAreas在前面表示MVC路由系统会先去匹配Area中的路由配置规则如果你改变了顺序可能会找到错误的Controller发生意外的错误。 在ASP.NET MVC5的每个区域都有一个类区域名AreaRegistration比如我们刚才建的一个Admin区域AdminAreaRegistration类 public class AdminAreaRegistration : AreaRegistration { public override string AreaName { get { return Admin; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( Admin_default, Admin/{controller}/{action}/{id}, new { action Index, id UrlParameter.Optional } ); } }这个类的作用主要是用于标示区域名称和区域Controller的路由可以看到路由规则为Admin/{controller}/{action}/{id}前面统一跟了一个Admin。 二、在Area区域的视图之间Action的链接跳转的处理 当在ASP.NET MVC项目中使用了AreaArea区域后会涉及到不同Area的Action链接之间相互跳转我使用Html.ActionLink有些地方需要注意。 1、同一个Area之间跳转 在Area区域的视图中生成指向同一个Area的Action链接时你不需要做任何处理当你调用Html.ActionLink时MVC框架自动去找当前Area的相应路由来生成Action的链接。如下 Html.ActionLink(Click me, About) 生成下面的html: a href/Admin/Home/AboutClick me/a 2、不同Area之间跳转 Html.ActionLink(Click me to go to another area, Index, new { area Support }) 把Route中的area指定就可以了。 3、跳转到不带Area的Action 我们知道使用Html.ActionLink没有指定area默认就是当前的area。有时我们需要链接到顶层的Controller的Action就是不要带area也很简单只需要把area传空字符串就可以了。如下 Html.ActionLink(Click me to go to another area, Index, new { area }) 转载于:https://www.cnblogs.com/hanjun0612/p/9779842.html