MVC4笔记 Area区域

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"})

时间: 2025-01-06 11:21:46

MVC4笔记 Area区域的相关文章

Area区域

1.mvc4.0新增的area区域机制,可以协助你在架构较为大型的项目,让独立性较高的部分功能独立成一个MVC子网站,以降低网站与网站之间的耦合性,也可以通过area的切割,让多人同时开发同一个项目时候,能够减少互相冲突的机会.在MVC项目中是不允许有两个同名的控制器的. 比如说就是你在做网站时,你有首页了,但是你要想有别的栏目,那么这时Area就有用处了,可以通过跳转链接来访问你所想要去的子栏目. 在某个区域下如果需要访问区域外部的页面,我们可以使用Html.RouteLink方法来生成跳转链

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

码农最怕眼高手低 今天来练习mvc Area技术和bootstrap以及异步表单的C#代码实现. 1.area区域架构对于建立复杂业务逻辑很有帮助,由  AreaRegistration.RegisterAllAreas()方法遍历路由表,获得所有注册的路由.参见 建立类库Common,下设一个文件夹BookStore 在其中建立model和controller.(注意引用System.Web.Mvc这个dll) 项目结构如图: 其中book.cs为model模型 namespace Commo

MVC4 笔记

1. Microsoft.Web.Helpers.UrlBuilder 2. Microsoft.Web.Mvc.AreaHelpers public static string GetAreaName(RouteBase route); public static string GetAreaName(RouteData routeData); 3 MVC4 笔记

【转载】MVC Area 区域相关技术

创建Area 右键工程选择 添加->区域,弹出如下填写Area的对话框: 点击添加后,工程目录结构如下: 和创建一个空MVC工程结构类似,Admin Area 有自己的 Controllers.Models 和 Views 文件夹,不一样的地方就是多了一个 AdminAreaRegistration.cs 文件,这个文件中定义了一个叫 AdminAreaRegistration 的类,它的内容如下: namespace MvcApplication1.Areas.Admin { public c

[MVC]Area区域相关技术

MVC提供Area机制,在同一个项目之内就能够切割出不同的ASP.NET MVC网站. 插入:首先在相同的位置,比如说同一个文件夹(如:Controllers)是不能创建俩个相同名称的文件(如:HomeController),其次在不同的文件夹中如fold1和fold2,中各自创建一个TestController,程序能够通过编译,但当浏览器视图执行/Test时,网站报出异常,如图: 因为在默认情况下,路由会同时匹配两个controller,造成无法访问. 在项目上,右键,创建区域,问题解决.

数据库设计之area区域表改版后

原先版本:http://blog.csdn.net/u012012240/article/details/51221080 原先版本直辖市的省级别和市级别为1条记录,1条记录即代表省又代表市,操作起来很不方便! 这个版本创建了个直辖市记录为省级记录,将原先直辖市记录的parent改为省级直辖市的id,这样方便操作及理解! /* SQLyog v10.2 MySQL - 5.6.17 : Database - whiteshirt *********************************

mvc4 基于Area实现插件模块化开发

对于一个较大规模的Web应用,可以从功能上通过Area将其划分为为较小的单元.每个Area相当于一个独立的子系统,具有一套包含Model.Views和Controller在内 的目录结构和配置文件.一般来说,每个Area具有各自的路由规则,而基于Area的路由映射通过System.Web.Mvc.AreaRegistration注册. 先来看下整体结构: LoonMvc4是正常的mvc4项目,loon.plugin1和loon.plugin2是普通类库项目,接下来我们来看下怎么使得loog.pl

深入理解Java虚拟机笔记---内存区域

Java虚拟机在执行Java程序过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域有自各的用途,以及创建及销毁时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁.根据<Java虚拟机规范(第2版)>规定,Java虚拟机管理的内存区域包括以下几个运行时数据区域,下如图 1.程序计数器(Program Counter Register) 程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器.字节码解释器工作时就是通过

C# Area区域配置,修改默认路由

1.右键项目新建文件夹 Areas 2.先把项目分类包好,建两个文件夹,放Controller和View,Model也可以放在这里 因为项目启动默认打开的是Home/Index ,我把它放在了Website文件夹内了,这就需要更改路由配置了 3.如果更改了默认目录,就要去修改路由配置了,打开Global.asax.cs代码如下,F12进 RouteConfig using System.Web; using System.Web.Mvc; using System.Web.Routing; na