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. 【Unity笔记】寻路导航Navigation中的区域Areas与消耗Cost

    Navigation寻路导航界面下,Areas分页下是在给导航区域分类(相当于分层),以及为每个分类设置不同的消费Cost,意义在于,导航算法中会计算出的是累加起来消耗最低的路径(不一定是视觉上最短可 ...

  2. 【无私分享:ASP.NET CORE 项目实战(第九章)】创建区域Areas,添加TagHelper

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 在Asp.net Core VS2015中,我们发现还有很多不太简便的地方,比如右击添加视图,转到试图页等功能图不见了,虽然我 ...

  3. [转]【无私分享:ASP.NET CORE 项目实战(第九章)】创建区域Areas,添加TagHelper

    本文转自:http://www.cnblogs.com/zhangxiaolei521/p/5808417.html 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 在Asp ...

  4. 在Asp.Net Core中添加区域的简单实现

    使用区域,可以有效的对业务进行隔离,各种业务及分工可以更灵活.在Asp.Net Core中启用区域也是极简单的. 使用步骤: 1.在 Startup.cs 中添加区域的路由: app.UseMvc(r ...

  5. MVC中的区域

    authour: chenboyi updatetime: 2015-05-03 08:26:30 friendly link:   目录: 1,思维导图 2,AreaRegistration类的Re ...

  6. 创建区域Areas,添加TagHelper

    创建区域Areas,添加TagHelper 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 在Asp.net Core VS2015中,我们发现还有很多不太简便的地方,比如右 ...

  7. 实例分析ASP.NET在MVC5中使用MiniProfiler监控MVC性能的方法 

    这篇文章主要为大家详细介绍了ASP.NET MVC5使用MiniProfiler监控MVC性能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 MiniProfiler ,一个简单而有效的迷你剖析器 ...

  8. ASP.NET MVC5使用Area区域

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

  9. 在ASP.NET MVC中使用区域来方便管理controller和view

    在ASP.NET MVC中使用区域来方便管理controller和view 在mvc架构中,一般在controllers和views中写所有控制器和视图, 太多控制器时候,为了方便管理,想要将关于pe ...

随机推荐

  1. 获取web路径的几种方式

    1.string str1 = Request.ApplicationPath.ToString();           返回路径为:\HolterClientWeb 2.HttpServerUti ...

  2. C#获取当前系统磁盘符、系统目录、桌面等

    1.获取方式如下 Environment.SpecialFolder中定义了许多常用的目录 //获取当前系统磁盘符方法1,返回:C: string path = Environment.GetEnvi ...

  3. linux free命令建检查内存状态

    前端时间发现博客服务器物理内存使用过高问题,就是使用linux free命令检查的,这次详细介绍下这个命令. 命 令: free 功能说明:显示内存状态.语 法: free [-bkmotV][-s  ...

  4. [c#]asp.net开发微信公众平台(1)数据库设计

    开发微信公众平台之前,先去微信官方了解下大概的情况 这里:http://mp.weixin.qq.com/wiki/index.php :看了之后心里大致有数了,开始设计数据库,尽可能的考虑,未考虑到 ...

  5. 使用AFNetworking时, 控制器点击返回销毁了, 但还是会执行请求成功或失败的block, 导致野指针异常

    原本我以为是我程序框架有问题...后来才知道, 无知真可怕... __unsafe_unretained __block typeof(self) weakSelf = self; AFHTTPSes ...

  6. php学习之路

    1.php拼接字符串+查询 $floor_id = M('house_floor_input')->where($map1)->field('id')->select(); $flo ...

  7. zepto源码研究 - zepto.js-3 (常用的工具)

    pluck: /** * 根据是否存在此属性来获取当前集合,返回一组属性值 * @param property * @returns {*} */ pluck: function(property){ ...

  8. 25 读取jar包内log4j.properties文件方法

    //读取log4j日志配置文件 InputStream inputStream=ApplicationExecutor.class.getResourceAsStream("/log4j_h ...

  9. 向Dialog中添加一个新的Menu

    1.创建一个新的Menu,在资源管理视图中,右键Menu-->传入Menu 2.设计新Menu,ID为IDR_MENU1 3.在该Dialog的源文件中,找到CTest001Dlg::OnIni ...

  10. 多线程08-Callable和Future

    1.简介 Callable是一个接口,与Runnable类似,包含一个必须实现的call方法,可以启动为让另一个线程来执行,执行Callable可以得到一个Future对象 该对象可以监听Callab ...