MVC之Area相关技术
来源:互联网 发布:开淘宝需要交钱吗 编辑:程序博客网 时间:2024/05/18 03:07
当在做MVC大型网站时,我们通常会切割成多个模块。但又由于在MVC中如果有Controller名字相同的话,会出错,那如何来解决这个问题呢?微软太人性化了,看下文。
1.新增区域
1)添加区域
2)设置区域名称
3)最后显示
2.默认路由与区域路由的优先级。
我们在打开Global.asax,如下所示
<span style="font-size:18px;"> public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { //注册全部的区域路由 AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); //注册路由 RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } }</span>
其中第一行就是我们的区域路由注册进RouteTable.Routes,正所谓“先注册先赢”,所以我们已经在区域的OrderAreaRegistration.cs定义了某个网址路由。相应的如果两个注册机制交换顺序的画,就会先比对默认的路由。
<span style="font-size:18px;"> public class OrderAreaRegistration : AreaRegistration { public override string AreaName { //对应的路由的地址文件名称 get { return "Order"; } } public override void RegisterArea(AreaRegistrationContext context) { //路由的比对规则 context.MapRoute( "Order_default", "Order/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional } ); } }</span>
3.即使使用了区域,仍然可能存在名称冲突
比如在两种路由机制中有了相同的名称话,有时也可能出现冲突,解决办法如下,给指定的路由传入相应的namespace。当指定了命名空间后,MVC就不再会搜索整个网站的类别来寻找Controller,而是利用指定的命名空间去寻找。
<span style="font-size:18px;">public override void RegisterArea(AreaRegistrationContext context) { //路由的比对规则 context.MapRoute( "Order_default", "Order/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional }, //指定相应的命名空间,因此寻找路由的时候,就不会在发生冲突了 namespaces: new string[1] { "MvcApplication1.Areas.Order" } ); }</span>
4.路由的高级特性
我们在做开发的时候,如何才能把控制器单独抽离出来来管理呢?什么意思呢?让MVC框架中的Controller来自于一个独自的类来管理,这样方便管理。那么先来了解一下MVC中视图的机制吧!
1.视图机制
分析:我们在上面已经知道MVC的程序入口是Global.asax类下的Application_Start方法,在这里会先注册全部的路由机制,因此当注册完区域路由和默认的路由后,就会去比对发过来的Http请求。此时就会去程序集也就是bin文件下找名字以controller结尾的,并且继承了Controller类的文件,找到后就会采取其中的路由规则一一比对。因此利用这个特性,我们可以单独建立一个类库,然后建立相应的以Controller的类,只不过让程序最终编译进MVC的程序集中即可,这样就可以找到我们的控制器。
- MVC之Area相关技术
- mvc Area相关技术
- mvc Area相关技术
- mvc Area相关技术
- mvc Area相关技术
- mvc Area相关技术
- MVC技术相关
- MVC Controller相关技术
- MVC笔记 Controller相关技术
- MVC笔记 Controller相关技术
- [ASP.NET MVC 小牛之路]08 - Area 使用
- [ASP.NET MVC 小牛之路]08 - Area 使用
- [ASP.NET MVC 小牛之路]08 - Area 使用
- [ASP.NET MVC 小牛之路]08 - Area 使用
- MVC中Controller控制器相关技术
- ASP.NET MVC Area操作
- MVC跨Area地址写法
- MVC 3使用 Area 小结
- Android下的.mk文件
- J2EE Spring入门
- Android 原生Launcher2中动态刷新日历图标 显示日期与星期
- cocos2dx笔记
- 刚才 item 的点击监听被屏蔽了
- MVC之Area相关技术
- JS笔记
- A Theoretical Analysis of Feature Pooling in Visual Recognition
- 杨氏矩阵
- 【解决】android.content.res.Resources$NotFoundException:String resource ID #0x86
- 服务器端负载均衡技术的本质原理
- 九度OJ 1497:面积最大的全1子矩阵(DP)
- JSP页面跳转页面带参数
- Shp文件的几何向量在Osg中转换及轮廓提取