MVC5中的区域(Areas)
MVC本身提倡的就是关注点分离。但是当项目本身的业务逻辑足够复杂,如果所有的业务逻辑都写个Controller文件夹下面的时候,你会看到非常庞大的各种命名的Controller,这个时候区域的作用就非常明显了,将不同的模块通过区域加以区分,简单明了。
添加区域:
新建的MVC工程是没有区域的。点击项目右键->添加->区域,输入区域名称。.net会自动在项目下添加“Areas”文件夹,并在该文件夹下创建对应的区域的文件夹。创建一个“test”的区域,在区域下添加控制器“default”,将“default”控制器内容改为:
[RouteArea("test")][RoutePrefix("default")]public class Default1Controller : Controller{[Route("index")]public ActionResult Index(){return View();}}
注册路由:
MVC项目创建后悔自动生成文件“Global.asax”文件。找到Application_Start函数中的RouteConfig.RegisterRoutes(RouteTable.Routes).进入RegisterRoutes,在其中添加代码 routes.MapMvcAttributeRoutes()
public class RouteConfig{public static void RegisterRoutes(RouteCollection routes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapMvcAttributeRoutes();//注册属性路由routes.MapRoute(name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });}}
删除AreaRegistration:
当你创建新的区域时,工程会自动在区域下创建AreaRegistration。比如创建default控制器后,test区域的文件夹下会自动生成“testAreaRegistration.cs”,这个文件是MVC5以前的版本用来注册路由的。在MVC5中由于在Global.asax注册了属性路由,所以可以直接把这个文件删了,否则也会出现找不到路由的错误。内容大致是:
public class testAreaRegistration : AreaRegistration{public override string AreaName{get{return "test";}}public override void RegisterArea(AreaRegistrationContext context){context.MapRoute("test_default","test/{controller}/{action}/{id}",new { action = "Index", id = UrlParameter.Optional });}}
然后就可以直接通过路由的方式访问Areas中的控制器了:
<a class="btn btn-default" href="/test1/default/index">test »</a>
MVC5中的区域(Areas)相关推荐
- ASP.NET MVC5使用Area区域
转载:http://www.lanhusoft.com/Article/217.html 在大型的ASP.NET mvc5项目中一般都有许多个功能模块,这些功能模块可以用Area(中文翻译为区域)把它 ...
- MVC区域areas添加出现错误,生成空文件夹问题
在MVC中的Areas中添加区域时,出现错误提示,而且生成的区域文件夹下并没有Controllers.Views.Models等文件夹,是因为 Microsoft.AspNet.Mvc需要安装或升级, ...
- Halcon学习之六:获取Image图像中Region区域的特征参数
area_center_gray ( Regions, Image : : : Area, Row, Column ) 计算Image图像中Region区域的面积Area和重心(Row,Colu ...
- mvc调用mysql存储过程_mysql – 存储过程不在MVC5中返回值
我正在使用db方法在MVC5中使用Entity Framework.我使用Mysql作为数据库.我创建了一个过程,当Mysql中的Call Procedure它符合我的期望时.但是当我在MVC中使用过 ...
- ITK:获取图像中标记区域的几何属性
ITK:获取图像中标记区域的几何属性 内容提要 输出结果 C++实现代码 内容提要 获取图像中标记区域的几何属性 输出结果 Image (0x7fd274c5f3c0) RTTI typeinfo: ...
- ITK:获取图像中标记区域的统计属性
ITK:获取图像中标记区域的统计属性 内容提要 输出结果 C++实现代码 内容提要 输出结果 Number of labels: 2 min: 255 max: 255 median: 0 mean: ...
- ITK:用颜色标记图像中的区域
ITK:用颜色标记图像中的区域 内容提要 输出结果 C++实现代码 内容提要 用颜色标记图像中的区域 输出结果 C++实现代码 #include "itkBinaryImageToLabel ...
- ITK:为图像中标记区域的边界上色
ITK:为图像中标记区域的边界上色 内容提要 输出结果 C++实现代码 内容提要 为图像中标记区域的边界上色. 输出结果 C++实现代码 #include "itkBinaryImageTo ...
- ITK:提取二值图像中连接区域的边界
ITK:提取二值图像中连接区域的边界 内容提要 输出结果 C++实现代码 内容提要 提取二进制图像中连接区域的边界. 输出结果 C++实现代码 #include "itkImage.h&qu ...
最新文章
- 从Java到Kotlin(五)
- 基于Proxy思想的Android插件框架
- php 虚基类,1.9 多态
- volatile关键字及编译器指令乱序总结
- react-native学习路线总结
- AndroidStudio_Gradle介绍以及在androidstudio中的使用---Android原生开发工作笔记76
- python用法查询软件_如何使用Python应用软件实现车牌检测和识别
- 真的不再使用*狗输入法了,改七七拼音
- AutoCAD.net(一):更改AutoCAD窗口的标题和图标
- 爬取斗鱼所有房间及直播源
- QQ音乐下载器、爬虫
- ensp 链路聚合的配置
- python发朋友圈突破朋友圈限制_用Python发一个高逼格的朋友圈
- Python爬虫学习笔记
- 信息数据采集软件-什么工具可以快速收集信息
- 电视屏幕太伤眼,五个地方降低亮度,来缓解眼睛痛.
- 如图一显示了用计算机模拟,(全套打包)北京市各区2017年中考模拟试题汇编·数学...
- Could not load file or assembly ‘NPOI.OOXML, Version=2.5.5.0, Culture=neutral, PublicKeyToken=0df73e
- 突发!诺基亚裁员超1200人
- 制作html动态链接,html5 canvas万花筒动态链接动画