1.Area是什么?

  MVC 2 中引进了区域的概念,它允许将模型,视图和控制器分成单独的功能节点,换句话说,可以在大型复杂的网站中建立几个区域(模块),每一个区域都有Model,View,Controller机制.

2.什么时候使用Area?

  当项目复杂时,可能需要许多个Controller,View,如果有n个开发团队来开发,如果只在一个项目中创建,难出维护和管理.这时,可以考虑建立多个Area,每个Area可以由一个团队来负责,这样就将复杂的项目分配开了,开发管理起来也就方便了.

3.如何使用Area?

  第一种:简单的方法:

    在一个项目A中,在项目文件右击->添加->区域,输入名称,点击确定后,会自动生成一组文件.

     

      

      自动生成的文件: Areas文件夹下面是区域Blog,它里面包含了完整的Controller,View,Models机制,同时需要注意的是还生成一个区域注册文件BlogAreaRegistration.cs,内容如下:

        

namespace MvcArea.Areas.Blog
{
public class BlogAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Blog";
}
} public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Blog_default",
"Blog/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
}

继承AreaRegistration类,重写AreaName属性,RegisterArea方法,注册一个新路由. 这样在访问 Blog/Home/Index  时,会自动定位到Blog区域中的Controller和View.

  

第二种: 由于第一种方法,没有完全从一个项目中剥离出新的区域,所以此方法有了改进.

  在第一种解决方案中,新建一个mvc项目B,然后将两个web.config文件和Global.asax文件删除,再在项目根目录中新建一个类文件继承自AreaRegistration,重写同上一种方法.

  然后将第一种方法中Blog文件夹下的Controller文件夹,BlogAreaRegistration文件删除掉

  接下来,再第一个项目A中引用这个mvc项目B.

  至此,达到将区域中Controller分离出来一个单独的项目, 同样访问 Blog/Home/Index 时,会生效.

  不足之处, View一直是显示项目A中的View文件夹中的,如果项目B中有修改不会显示出来,只能手动复制到项目A中的View中去, 如何改进,请看第三种解决方案.

第三种: 将区域完全独立出来为一个项目.

  同样在项目A中创建一个Areas文件夹,再创建一个区域文件夹,如Shopping,但其中是空的,目前没有文件.

  然后新建一个项目C,同样实例Controller,View,并在根目录创建区域注册类文件(继承AreaRegistration类).

  然后将项目C中的内容拷贝到Shopping目录下面,再添加现有项目到解决方案中,也就是说,将项目C中的Controller,View都创建在区域Shopping下面.

  那么,如何将项目C中的生成dll被项目A引用呢?这里使用了项目属性中的"生成后事件"功能,由于此功能支持Dos命令,可以将dll文件从项目C复制到项目A的bin文件中.

  至此,完成区域独立,实现复杂项目的分组开发与管理.

    

MVC中Area的使用的更多相关文章

  1. ASP.NET MVC中Area的另一种用法

    ASP.NET MVC中Area的另一种用法 [摘要]本文只是为一行代码而分享 context.MapRoute("API", "api/{controller}/{ac ...

  2. MVC中Area的另一种用法

    [摘要]本文只是为一行代码而分享 context.MapRoute("API", "api/{controller}/{action}", new { }, n ...

  3. ASP.NET MVC 设置Area中 Controller 的方法 默认启动页

    MVC中通常分区域编程,互不干扰,如果需要设置某个区域下面的某个控制器下面的某个方法为默认启动页的话,直接修改项目的路由如下: public static void RegisterRoutes(Ro ...

  4. MVC中实现Area几种方法

    概述        ASP.NET MVC中,是依靠某些文件夹以及类的固定命名规则去组织model实体层,views视图层和控制层的.如果是大规模的应用程序,经常会由不同功能的模块组成,而每个功能模块 ...

  5. 在ASP.NET MVC中使用Area

    前言: 这段时间小猪花了不少功夫在研究ASP.NET MVC的源码上面,可谓思想是了解了不少,用的上用不上却是另外一回事了.! 应用场景: ASP.NET MVC中,是依靠某些文件夹以及类的固定命名规 ...

  6. 在ASP.Net MVC 中,如何在Global.asax中配置一个指向Area内部的默认Route

    ASP.Net MVC 中配置Route的时候可以设置一个默认的Route. 比如我要在输入http://localhost的时候默认进入http://localhost/home/index.可以在 ...

  7. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  8. MVC中如何设置路由指定默认页

    MVC中怎么设置默认页,在webform中 只要右键设置起始页就可以,但MVC中却没有这个功能,其实MVC更简单 如下: Login是控制器,Index 是动作 在全局Global.asax中改动下即 ...

  9. MVC 插件化框架支持原生MVC的Area和路由特性

    .NET MVC 插件化框架支持原生MVC的Area和路由特性 前面开放的源码只是简单的Plugin的实现,支持了插件的热插拔,最近晚上偶然想到,原生的MVC提供Areas和RouteAtrribut ...

随机推荐

  1. 横竖屏事件响应(viewWillLayoutSubviews和通知)两种方式

    转载:http://blog.csdn.net/nogodoss/article/details/17246489 最近搞横竖屏,获得一些心得,特记录下来. 做横竖屏最重要的是确定横竖屏响应的接口.目 ...

  2. iOS开发之地图代理不起作用(提示vImage decode failed, falling back to CG path.)

    项目中用到了地图相关的东西,就把曾经的demo搬了出来,结果发现直接执行之前的demo没有问题,在xcode5下新建项目再把代码粘贴过来就会提示 May 5 11:36:21 infomedia-iP ...

  3. netbeans下将全部jar包打成一个,俗称fat jar

    netbeans的java项目中.默认会将配置好的外部引用jar包,复制到dist文件夹的lib文件夹中去.假设须要公布出去.就须要将dist文件夹生成的jar和lib文件夹都拷贝出去公布,不方便. ...

  4. GROUP BY,WHERE,HAVING之间的差别和使用方法

    having子句与where有类似之处但也有差别,都是设定条件的语句.在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先运行.而where子句在查询过程中运行优 ...

  5. iOS开发中一些常用的方法

    1.压缩图片 #pragma mark 处理图片 - (void)useImage:(UIImage *)image { NSLog(@"with-----%f heught-----%f& ...

  6. android108 内存分配

    #include <stdio.h> #include <stdlib.h> #include <malloc.h> //包含头文件 main(){ ;//栈中 ] ...

  7. MyEclipse Hibernate Reverse Engineering 找不到项目错误

    解决办法:在项目下找到.project文件,在最后的natures标签加入下面红色的一行代码. <natures>        <nature>com.genuitec.ec ...

  8. c#中[Flags] 枚举类型定义问题_百度知道

    [Flags]的微软解释是“指示可以将枚举作为位域(即一组标志)处理.”其实就是在编写枚举类型时,上面附上Flags特性后,用该枚举变量是既可以象整数一样进行按位的“|”或者按位的“&”操作了 ...

  9. 【转】【2015MIIC】迅雷CTO陈磊:互联网思维会害死很多传统企业

    MIIC2015大会的“跨界与重构”论坛上,迅雷CTO.网心科技CEO陈磊的演讲引起众多共鸣——独家揭秘“互联网大忽悠”,给这群人画了像,互联网大忽悠通常有五招: 第1招,画大饼,给你一个宏伟的目标: ...

  10. A swift Tour

    传统的认为,一个新的语言的第一个应用程序都会打印"Hellow,Word",在Swift中,可以只需要一行代码: pringln("Hello, word") ...