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 &raquo;</a>

MVC5中的区域(Areas)相关推荐

  1. ASP.NET MVC5使用Area区域

    转载:http://www.lanhusoft.com/Article/217.html 在大型的ASP.NET mvc5项目中一般都有许多个功能模块,这些功能模块可以用Area(中文翻译为区域)把它 ...

  2. MVC区域areas添加出现错误,生成空文件夹问题

    在MVC中的Areas中添加区域时,出现错误提示,而且生成的区域文件夹下并没有Controllers.Views.Models等文件夹,是因为 Microsoft.AspNet.Mvc需要安装或升级, ...

  3. Halcon学习之六:获取Image图像中Region区域的特征参数

    area_center_gray ( Regions, Image : : : Area, Row, Column )    计算Image图像中Region区域的面积Area和重心(Row,Colu ...

  4. mvc调用mysql存储过程_mysql – 存储过程不在MVC5中返回值

    我正在使用db方法在MVC5中使用Entity Framework.我使用Mysql作为数据库.我创建了一个过程,当Mysql中的Call Procedure它符合我的期望时.但是当我在MVC中使用过 ...

  5. ITK:获取图像中标记区域的几何属性

    ITK:获取图像中标记区域的几何属性 内容提要 输出结果 C++实现代码 内容提要 获取图像中标记区域的几何属性 输出结果 Image (0x7fd274c5f3c0) RTTI typeinfo: ...

  6. ITK:获取图像中标记区域的统计属性

    ITK:获取图像中标记区域的统计属性 内容提要 输出结果 C++实现代码 内容提要 输出结果 Number of labels: 2 min: 255 max: 255 median: 0 mean: ...

  7. ITK:用颜色标记图像中的区域

    ITK:用颜色标记图像中的区域 内容提要 输出结果 C++实现代码 内容提要 用颜色标记图像中的区域 输出结果 C++实现代码 #include "itkBinaryImageToLabel ...

  8. ITK:为图像中标记区域的边界上色

    ITK:为图像中标记区域的边界上色 内容提要 输出结果 C++实现代码 内容提要 为图像中标记区域的边界上色. 输出结果 C++实现代码 #include "itkBinaryImageTo ...

  9. ITK:提取二值图像中连接区域的边界

    ITK:提取二值图像中连接区域的边界 内容提要 输出结果 C++实现代码 内容提要 提取二进制图像中连接区域的边界. 输出结果 C++实现代码 #include "itkImage.h&qu ...

最新文章

  1. 从Java到Kotlin(五)
  2. 基于Proxy思想的Android插件框架
  3. php 虚基类,1.9 多态
  4. volatile关键字及编译器指令乱序总结
  5. react-native学习路线总结
  6. AndroidStudio_Gradle介绍以及在androidstudio中的使用---Android原生开发工作笔记76
  7. python用法查询软件_如何使用Python应用软件实现车牌检测和识别
  8. 真的不再使用*狗输入法了,改七七拼音
  9. AutoCAD.net(一):更改AutoCAD窗口的标题和图标
  10. 爬取斗鱼所有房间及直播源
  11. QQ音乐下载器、爬虫
  12. ensp 链路聚合的配置
  13. python发朋友圈突破朋友圈限制_用Python发一个高逼格的朋友圈
  14. Python爬虫学习笔记
  15. 信息数据采集软件-什么工具可以快速收集信息
  16. 电视屏幕太伤眼,五个地方降低亮度,来缓解眼睛痛.
  17. 如图一显示了用计算机模拟,(全套打包)北京市各区2017年中考模拟试题汇编·数学...
  18. Could not load file or assembly ‘NPOI.OOXML, Version=2.5.5.0, Culture=neutral, PublicKeyToken=0df73e
  19. 突发!诺基亚裁员超1200人
  20. 制作html动态链接,html5 canvas万花筒动态链接动画

热门文章

  1. ADG架构搭建1--Oracle安装
  2. [经验总结]我的Doxygen配置文件
  3. Hive/Spark SQL使用案例
  4. dnf一直接收服务器信息失败怎么办,DNF近期出现的 接受频道信息失败 解决方法...
  5. Kindle 3截屏
  6. 为何学Python(转)
  7. 亿图图示 Edraw Max 9.4 中文特别版 Mac 专业的图形图表绘制工具
  8. python实战编程小案例-----更新中
  9. 简简单单的一个嵌入式板子项目,笔记
  10. TrafficMonitorr网速流量监控/CPU内存率查看工具