【转】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)的更多相关文章
- 【Unity笔记】寻路导航Navigation中的区域Areas与消耗Cost
Navigation寻路导航界面下,Areas分页下是在给导航区域分类(相当于分层),以及为每个分类设置不同的消费Cost,意义在于,导航算法中会计算出的是累加起来消耗最低的路径(不一定是视觉上最短可 ...
- 【无私分享:ASP.NET CORE 项目实战(第九章)】创建区域Areas,添加TagHelper
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 在Asp.net Core VS2015中,我们发现还有很多不太简便的地方,比如右击添加视图,转到试图页等功能图不见了,虽然我 ...
- [转]【无私分享:ASP.NET CORE 项目实战(第九章)】创建区域Areas,添加TagHelper
本文转自:http://www.cnblogs.com/zhangxiaolei521/p/5808417.html 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 在Asp ...
- 在Asp.Net Core中添加区域的简单实现
使用区域,可以有效的对业务进行隔离,各种业务及分工可以更灵活.在Asp.Net Core中启用区域也是极简单的. 使用步骤: 1.在 Startup.cs 中添加区域的路由: app.UseMvc(r ...
- MVC中的区域
authour: chenboyi updatetime: 2015-05-03 08:26:30 friendly link: 目录: 1,思维导图 2,AreaRegistration类的Re ...
- 创建区域Areas,添加TagHelper
创建区域Areas,添加TagHelper 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 在Asp.net Core VS2015中,我们发现还有很多不太简便的地方,比如右 ...
- 实例分析ASP.NET在MVC5中使用MiniProfiler监控MVC性能的方法
这篇文章主要为大家详细介绍了ASP.NET MVC5使用MiniProfiler监控MVC性能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 MiniProfiler ,一个简单而有效的迷你剖析器 ...
- ASP.NET MVC5使用Area区域
转载:http://www.lanhusoft.com/Article/217.html 在大型的ASP.NET mvc5项目中一般都有许多个功能模块,这些功能模块可以用Area(中文翻译为区域)把它 ...
- 在ASP.NET MVC中使用区域来方便管理controller和view
在ASP.NET MVC中使用区域来方便管理controller和view 在mvc架构中,一般在controllers和views中写所有控制器和视图, 太多控制器时候,为了方便管理,想要将关于pe ...
随机推荐
- WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!错误
删除 awZ sm01]# vim .ssh/known_hosts 中不能登录主机的相关信息.
- 判断两条直线的位置关系 POJ 1269 Intersecting Lines
两条直线可能有三种关系:1.共线 2.平行(不包括共线) 3.相交. 那给定两条直线怎么判断他们的位置关系呢.还是用到向量的叉积 例题:POJ 1269 题意:这道题是给定四个点p1, ...
- SpringMVC05使用注解的方式
<body> <a href="add">新增</a> <a href="update">修改</a> ...
- php long time(1)
好久好久没有发表新的文章了,主要是懒得在这里写,都记在记事本上,所得都是自己理解的情况下写的,如今借此闲暇记录下来,:::: ****************PHP****************** ...
- Wcf序列化的循环引用问题1
1.Wcf数据契约序列化,使用的类DataContractSerializer 默认如果类不指定[DataContract],则序列化类的所有字段,并且在出现循环引用的时候回抛出异常,服务终止 msd ...
- Rolling cURL: PHP并发最佳实践
Rolling cURL: PHP并发最佳实践 在实际项目或者自己编写小工具(比如新闻聚合,商品价格监控,比价)的过程中, 通常需要从第3方网站或者API接口获取数据, 在需要处理1个URL队列时, ...
- 基于AFNetworking3.0的网络封装
1.创建名为HTTPMethod(自己随便起名字)的头文件 2.导入AFNetworking头文件(在github上下载最新版): #import "AFNetworking.h" ...
- golang 阻塞的坑
1.写go程序的时候一定要牢记主线程不能阻塞,一旦阻塞就崩溃,就怕那种某种情况下偶尔会出现几下阻塞的,一定要杜绝.2.select case的执行顺序是乱的,不确定的3.写入管道的时候,一定要保证管道 ...
- php 求两个文件的相对路径
网上看了一些这个题的一些解答方法,不过大多数就是对目前需求而定的,比如 $a = '/a/b/c/d/e.php'; $b = '/a/d/12/34/c.php'; getpath($a , $b ...
- JQUERY1.9学习笔记 之基本过滤器(四) 首元素选择器
首元素选择器:jQuery( ":first" ) <!DOCTYPE html><html lang="zh-cn"><head ...