mvc4.0新增的area区域机制,可以协助你在架构较为大型的项目,让独立性较高的部分功能独立成一个MVC子网站,以降低网站与网站之间的耦合性,也可以通过area的切割,让多人同时开发同一个项目时候,能够减少互相冲突的机会。

 
在mvc专案中不能有两个同名的控制器,即使你有区分不同的命名空间可以正常编译,但实际上在运行时仍然出错,除非在app_start/RouteConfig文件中通过mapRoute方法新增网址路由的设置,并明确指定命名空间,才能让此功能正常运行。
eg
routes.MapRoute(
name:"订单系统",
url:"Orders/{controller}/{action}/{id}",
defaults:new { controller = "member" action="index" ,id=UrlParameter.Optional},
namespaces:new string[]{"MvcApplication1.Controllers.订单系统"}
);
routes.MapRoute(
name:"会员系统",
url:"Members/{controller}/{action}/{id}",
defaults:new { controller = "member" action="index" ,id=UrlParameter.Optional},
namespaces:new string[]{"MvcApplication1.Controllers.会员系统"}
);
 
但是如果网站真的很大,也许控制器都好几十个文件,这样不断维护下去,网站就会越来越复杂,失去了关注点分离的好处,mvc项目如果在网站独立性很高的情况下,通常会拆分为不同的项目来开发,但在管理上会变得比较麻烦,例如在不同的项目中会有重复定义的web.config属性,部署的复杂度增加。
 
也因为有这样的需求,在2.0中mvc就提供了area机制,可以在同一个项目内就能够切分不同的mvc网站,且每一个子网站都会有完整的mvc目录结构在开发商就像是区分成不同的mvc网站一样
 
如何在现有项目中新增区域
项目上单击右键 添加 --》区域
 
 
如何设置区域的网址路由
在每一个区域目录下都会有一个[AreaName]AreaRegistration.cs文档
例如刚新增一个a区域,那么就会有一个aAreaRegistration.cs,此文档就如同在app_start/routeConfig.cs一样
来定义网址路由。
aAreaRegistration.cs里面这个类集成了AreaRegistration抽象类,并替换一个AreaName属性用来指定这个区域的名称,另外替换一个方法名为RegisterArea,这个的属性与app_start/routeConfig.cs中的RegisterRoutes方法如出一辙。
 http://blog.sina.com.cn/s/blog_95fa28e60102vdn7.html
默认路由与区域路由的优先级
在网站根目录下的Global.asax中的Application_Start()方法中会看到的AreaRegistration.RegisterAllArea();这行默认的程序代码
 
其中第一行 AreaRegistration.RegisterAllAreas()就是讲区域的路由注册金RouteTable.Routes,"先注册先赢"
如果在a区域的aAreaRegistration.cs定义了某个网站路由,而在网站根目录下的Global.asax也注册了相同规则的话,最后比对成功的规则将会是区域的路由。
 
 
如何制定默认网站与区域网站的链接
在mvc中有三个默认的RouteValue名称,分别是控制器,action,area,其中控制器和action参数是必要参数,缺一不可, 剩下的区域这个RouteValue就是当需要特别制定到区域的时候才必须加上的。
以Html.ActionLink()为例,(Url.Action的用法一样)
 
若要生成指定的a区域下Member控制器的Index动作,可使用以下语法,只要额外加一个区域路由值就可以
@Html.ActionLink("会员订单",“Index”,new { controller="Member",area="a"})
 
如果要用Html.Action辅助方法来装入部分监视属性,
@Html.Action("aDetail","Member",new {area="a"})

MVC4笔记 Area区域的更多相关文章

  1. Area区域

    1.mvc4.0新增的area区域机制,可以协助你在架构较为大型的项目,让独立性较高的部分功能独立成一个MVC子网站,以降低网站与网站之间的耦合性,也可以通过area的切割,让多人同时开发同一个项目时 ...

  2. mvc area区域和异步表单,bootstrap简单实例

    码农最怕眼高手低 今天来练习mvc Area技术和bootstrap以及异步表单的C#代码实现. 1.area区域架构对于建立复杂业务逻辑很有帮助,由  AreaRegistration.Regist ...

  3. asp.net mvc4设置area里面使用相同的 Controller 名称并设置area里的页面为起始页

    asp.net mvc4设置area里面使用相同的 Controller 名称并设置area里的页面为起始页 1.使用重名controller 在asp.net mvc2以后的版本里面,有了area( ...

  4. MVC5 Api Area 区域

    到Area区分不同的模块让项目结构更加的清晰 TODO 步骤如下: 项目 –> 添加 -> 区域 (Area) 添加路由规则 public static class WebApiConfi ...

  5. 在ASP.NET MVC中使用Area区域

    在大型的ASP.NET mvc5项目中一般都有许多个功能模块,这些功能模块可以用Area(中文翻译为区域)把它们分离开来,比如:Admin,Customer,Bill.ASP.NET MVC项目中把各 ...

  6. ASP.NET MVC5使用Area区域

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

  7. MVC ASP.NET MVC5使用Area区域

    MVC  ASP.NET MVC5使用Area区域 一.为什么要使用area? 在大型的ASP.NET mvc5项目中一般都有许多个功能模块,这些功能模块可以用Area(中文翻译为区域)把它们分离开来 ...

  8. MVC下的Area区域知识点

    新建area区域 1.如果与根目录下的url相同,那么需要在RouteConfig.cs中 public static void RegisterRoutes(RouteCollection rout ...

  9. 《深入理解 Java 虚拟机》学习笔记 -- 内存区域

    <深入理解 Java 虚拟机>学习笔记 -- 内存区域 运行时数据区域 主要分为 6 部分: 程序计数器 虚拟机栈 本地方法栈 Java 堆 方法区 如图所示: 1. 程序计数器(线程私有 ...

随机推荐

  1. vuejs过滤器

    结合管道符 | {{messageOne | capitalize}} capitalize 首字母大写 {{messageOne | uppercase}} uppercase 大写字母 {{mes ...

  2. prepareStatement createStatement

    preparedstatement具备很多优点,开发者可能通常都使用它,只有在完全是因为性能原因或者是在一行sql语句中没有变量的时候才使用通常的statement. preparedstatemen ...

  3. Intellij IDEA 快捷键(Mac)

    编辑 格式化代码 Alt+Command+L 大小写切换 Shift+Command+U 包围 Alt+Command+T 选中代码抽取方法 Alt+Command+M 调试/运行 查看 类关系视图 ...

  4. Bolts-Android

    对Android客户端编程来说,有个明确的规则是不能在ui线程里面做耗时的操作.这样就要求网络请求.文件读写等等操作都要异步操作.而异步操作完成后,往往需要再更新ui界面.最直接的想法是回调,只要保证 ...

  5. 【转】【C#】【Thread】Mutex 互斥锁

    Mutex:互斥(体) 又称同步基元. 当创建一个应用程序类时,将同时创建一个系统范围内的命名的Mutex对象.这个互斥元在整个操作系统中都是可见的.当已经存在一个同名的互斥元时,构造函数将会输出一个 ...

  6. Linux 守护进程一

    守护进程是一个后台进程,它无需用户输入就能运行,经常是提供某种服务. LInux作为服务器,主要的进程也都是为系统或用户提供后台服务功能. 常见的守护进程有Web服务器.邮件服务器以及数据库服务器等等 ...

  7. C语言 文件操作6--文件打开方式详解

    fopen文件打开模式 r代表read的简写,+代表可读可写,w代表write,b代表bit二进制位,t代表text r 打开只读文件,该文件必须存在r+ 打开可读可写的文件,该文件必须存在(这里的写 ...

  8. OpenGL 4.3配置教程

    OpenGL 4.3配置教程 下载开发包 需要下载的开发包主要包含如下几个组件:freeglut+glew+ OpenGL.Development.Cookbook+源码+GLM+SOIL. Open ...

  9. java个人总结

    20145230<Java程序设计>课程总结 每周读书笔记链接汇总 20145230<java程序设计>第0周学习总结:http://www.cnblogs.com/kobe2 ...

  10. [原创]Net实现Excel导入导出到数据库(附源码)

    关于数据库导出到Excel和SQLServer数据导出到Excel的例子,在博客园有很多的例子,自己根据网上搜集资料,自己做了亦歌简单的demo,现在分享出来供初学者学习交流使用. 一.数据库导入导出 ...