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. 计算日期时间 自动加1天 PHP计算闰年 java与PHP时间戳对比区别

    昨天写一个同步数据库的模块  从一个数据库同步到另外一个数据库,因为数据较多,不可能一次性全部搬迁过去,所以就按照每天搬迁! 写了一个 模块,点击加1,只要点击一次,自动从A数据库取出1天的数据, 并 ...

  2. 实现百度外卖APP个人中心头像"浪"起来的动画效果

    让你的头像浪起来~~~~~ DEMO 地址:网页链接,点击下载 你需要知道的 CADisplayLink 简单的说就是一定时器,其根本利用刷帧和屏幕频率一样来重绘渲染页面. 其创建方式: [Objec ...

  3. C语言知识总结(3)

    数组 数组的特点: 只能存放一种类型的数据,比如int类型的数组.float类型的数组 里面存放的数据称为“元素” 初始化方式 ] = {, , }; ] = {,}; , , }; ] = {[]= ...

  4. 20150313--AJAX

    from,提交信息,抛弃当前页面,并刷新页面. AJAX,从当前页面获取信息,并提交.反馈信息,不会抛弃页面. 例: 用户注册时,验证用户名是否已存在, 创建两个标准控件:TextBox1,Label ...

  5. UI2_UITextField

    // // ViewController.h // UI2_UITextField // // Created by zhangxueming on 15/7/2. // Copyright (c) ...

  6. Java Executors(线程池)

    Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利.为了编写高效稳定可靠的多线程程序 ...

  7. Eclipse的常用快捷方式

    在开发中,常用的一些快捷方式 alt+shift+r 修改方法名,变量名,关键体会enter                 ctrl+shift+c 先选中n行,注释                 ...

  8. POJ 1273(EK)

    题目大概意思是,有N条水沟和M个水池,问从第一个水池到最后一个水池在同一时间内能够流过多少水第一行有两个整数N,M接下来N行,每行有3个整数,a,b,c,代表从a到b能够流c单位的水超级模板题,一个有 ...

  9. WP开发笔记——不同Item显示不同ApplicationBar:适用于Pivot与Panorama

    一.在xaml页面定义两个ApplicationBar: <phone:PhoneApplicationPage.Resources> <shell:ApplicationBar I ...

  10. Linux磁盘与文件系统概念理解

    磁盘级别概念     这里讲的主要是网上所谓的老式磁盘,它是由一个个盘片组成的,我们先从个盘片结构讲起.如图1所示,图中的一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每 ...