1、背景
     微软在MVC中引入了Area概念,用于复杂项目的分工开发。如一个MVC项目中Controller过多时,就会导致项目中包含大量的Controller+View+Model,无论是查找还是调试都比较麻烦。因此微软引入了Area概念,不过默认也是在同一个项目中创建多个Area区域,本文主要讲解根据业务需要创建不同的Area项目,每个项目中都包含Controller+View+Model,也可以调用各自独立的业务逻辑和数据访问层,并通过主MVC项目进行导航
 
 
2、使用步骤
    2.1 创建一个shell(壳)的MVC项目,作为主项目,命名为Web.UI
 
    2.2 在主项目中创建一个Area文件夹
 
    2.3 创建一个名称为Web.UI.Area1的MVC空项目,创建位置位于主项目的Area文件夹下,并删除如global.asax等文件。新建Web.UI.Area1AreaRegistration.cs类文件,设置路由,代码如下:

namespace Web.UI.Area1
{
    public class Area1AreaRegistration : AreaRegistration
    {
        public override string AreaName
        {
            get
            {
                return "Web.UI.Area1";
            }
        }
        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "Web.UI.Area1",
                "Web.UI.Area1/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional },
                new string[] { "Web.UI.Area1.Controllers" }
            );
        }
    }
}
 
           创建一个测试Controller如Area1Controller.cs,并创建一个Action命名为Index,可显示任意信息,用于表示导航到此页面
   
    2.4 设置Web.UI.Area1的生成事件,将本项目生成的dll同时拷贝到Web.UI项目的bin目录下
         项目名称-->右键属性-->生成事件-->后期生成事件命令行输入以下内容:
          xcopy /r /y $(TargetDir)*.dll  $(SolutionDir)\Web.UI\bin
          xcopy /r /y $(TargetDir)*.pdb  $(SolutionDir)\Web.UI\bin
  
    2.5 在Web.UI项目任一View页面添加下面链接代码,导航到Web.UI.Area1--> Area1Controller-->Index对应的View页面
      其中:Web.UI.Area1为Area的名称;Area1为Controller名称;Index为Action名称
    @Html.ActionLink("导航到Area1, 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

MVC3中在同一解决方案的不同项目中实现Area功能的更多相关文章

  1. 在Swift项目中使用OC,在OC项目中使用Swift

    几天前,我开始新的App的开发了.终于有机会把swift用在实战中了,也学到了之前纯学语法时没有机会获得的知识. 这篇博文中,我就如何使用swift.OC混编做一个介绍. OC中使用Swift 首先, ...

  2. centos nginx 中安装ssl证书 以及在项目中的使用

    今天阿里云的证书到期了,重新申请了一个,下面是从申请到安装以及结合项目使用的过程: 1.登录阿里云   2.在左侧找到SSL证书 3.申请免费的证书 4.下载证书 5.根据说明配置nginx 6.在项 ...

  3. flask中的session cookie 测试 和 项目中的用户状态保持

    # -*- coding:utf-8 -*- # Author: json_steve from flask import Flask, current_app, make_response, req ...

  4. springBoot框架在idea中创建流程 同时存在一个项目中

    1.新建普通maven工程 2.在父级pom中按需修改 3.删除父级src目录 4.创建公共模块common,里面只有service接口和实体类 5.构建微服务模块,provider 6.引用Zook ...

  5. untiy 插件工具: 游戏中 策划数据Excel 导出到项目中

    https://github.com/zhutaorun/Excel2Unity,这个项目是直接下载就可以用的, 其中原理和相关的解释 http://blog.csdn.net/neil3d/arti ...

  6. IDEA添加项目依赖(将Tomcat中的servlet-api.jar添加到项目中去)

    File -> project structure -> Modules -> 右侧Dependencies -> 然后点加号把配置好的Tomcat的依赖包加进去

  7. vis.js没有中文文档,个人在项目中总结的一些中文配置

    ##vis.js var options = { nodes:{//节点配置 borderWidth: 1,//节点边框的宽度,单位为px borderWidthSelected: 2,节点被选中时边 ...

  8. VisualStudio2017中新建的ASP.NET Core项目中的各个文件的含义

     Program.cs is the entry point for the web application; everything starts from here. As we mentione ...

  9. [转]在iOS项目中使用CorePlot框架

    转载地址:http://blog.csdn.net/llfjfz/article/details/7849190#comments Core Plot是OS X和IOS下的一个开源图形库,它提供数据的 ...

随机推荐

  1. C#读写日志文本文件

    日志为文本文件每列以制表符隔开 行以换行符隔开 本次示例简单实现如下相关功能:1.正写日志文本 最新的日志放后面2.倒写日志文本 最新的日志放前面3.读日志文本内容显示在Label4.读日志文本内容到 ...

  2. AMQ学习笔记 - 07. 持久性订阅

    概述 一般的订阅,订阅者必须时刻处于活跃状态,才不会遗漏任何信息:持久性订阅,当订阅者处于非活动状态时,代理会为它们保留信息,下一次连接之后推送给它们. 持久订阅 与一般的定于相比,持久性订阅需要: ...

  3. tar命令: 对某目录文件打tar包时,排除指定的目录或文件

     如某当前目录存在以下文件或目录: 1.txt2.txt3.txtdir1dir2my2015.tarmy2016.tar 若要对当前目录除1.txt 和dir1.tar外,打包tar 步骤一.建立e ...

  4. [Bootstrap]组件(二)

    按钮组 .btn-group>.btn : 一组.btn按钮包裹在.btn-group 外包元素.btn-group  {position/display/} 按钮元素.btn <div ...

  5. C++将类的构造函数、析构函数声明为private或者protected的用途

    如果将构造函数.析构函数声明为private或者protected,表示不能从类的外部正常调用构造和析构函数了. 这种用法的通常使用的场景如下: 1.如果不想让外面的用户直接构造一个类A的对象,而希望 ...

  6. 【风马一族_Java】在某个范围内,找出具有水仙花特征的数字

    打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如: 153是一个"水仙花数",因为153=1的三 ...

  7. HTML5-draggable(拖放)

                                                   <!DOCTYPE html> <html class="no-js" ...

  8. 【转】JavaScript里的this指针

    用自然语言的角度理解JavaScript中的this关键字 <script type="text/javascript"> function ftn03(){ var ...

  9. SOAP 介绍

    简介 SOAP(Simple Object Access Protoco)简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于 XML 的协议.此协议规范由 IBM.Microso ...

  10. Android:什么是Holo?【Translated By KillerLegend】

    Android:什么是Holo? Martin Brinkmann on May 6, 2013 in Google Android 3 [Translated By KillerLegend] 当你 ...