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. VS的代码分析工具

    来自:[译]Visual Studio 2008 Code Metrics http://www.cnblogs.com/live41/archive/2010/02/08/1665627.html ...

  2. C# Winform关于控件TabControl闪烁的问题

    自己重写了一个Form,然后再该form上放一个TabControl鼠标移上去会闪烁,经过网上查找解决方案,最后总算是解决了....下面附上代码: 重写一个TabControl代码如下: using ...

  3. [应用层]mail邮件协议

    转:http://***/chapter-14/ 以前老记不住这smtp和pop3谁收谁发. 简单邮件传输协议(SMTP),用来发送或中转发出的电子邮件,占用tcp 25端口. 第三版邮局协议(POP ...

  4. 3D数学基础:3D游戏动画中欧拉角与万向锁的理解

    首先来看一下什么是欧拉角(Euler angles)?构件在三维空间中的有限转动,可依次用三个相对转角表示,即进动角.章动角和自旋角,这三个转角统称为欧拉角.——引自百度百科莱昂哈德·欧拉用欧拉角来描 ...

  5. MVC3迁移MVC4相关问题

    mvc3迁移到mvc4后,发布到服务器,出现了如下错误: [A]System.Web.WebPages.Razor.Configuration.RazorPagesSection cannot be ...

  6. IE firefox 兼容性整理

    1.尽量用jquery操作. 2.jquery取值时要用准确的方法,attr(), val(), text(), html(). 例如: <span value="a"> ...

  7. 05.C#泛型类型(三章3.1-3.2)

    接下来说下C#中的泛型,熟练地使用泛型能提高代码的重用性,使用我们代码瞬间就高大上了,当然只有一点点,真的只有一点点,因为后面要学习和掌握的知识还有很多.先来看下一个使用Dictionary<T ...

  8. chromium获取代码和编译

    转自360公司的一位仁兄,链接地址:http://blog.gclxry.com/?p=364 之前一直是用一个chromium27的代码来研究chromium的代码.自己也调用chromium co ...

  9. iOS开发小技巧--父子控制器练习中get到的技能,控制核心动画的范围

    一.未经过处理的动画是这样的,自定义的导航按钮也一起跟着转起来了. 二.自己想要的效果 三.实现这种效果的思想:核心动画要添加到view的layer上面,刚开始的情况是讲核心动画添加到了整个大view ...

  10. MVC学习Day02之校验

    MVC校验有两种方法: 方法一:自己动手写js---------略 方法二: l在View的页面中,首先指定页面强类型@model 类型 l使用Html.***For(model=>model. ...