ASP.NET MVC系列:Area

1. Area简介

  ASP.NET MVC Area机制构建项目,可以将相对独立的功能模块切割划分,降低项目的耦合度。

2. Area设置Routing

  新建Admin Area后,自动创建AdminAreaRegistration.cs,用于设置Area Routing。

using System.Web.Mvc;

namespace Libing.Portal.Web.Areas.Admin
{
    public class AdminAreaRegistration : AreaRegistration
    {
        public override string AreaName
        {
            get
            {
                return "Admin";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                name: "Admin_default",
                url: "Admin/{controller}/{action}/{id}",
                defaults: new { action = "Index", id = UrlParameter.Optional }
            );
        }
    }
}

  在Global.asax.cs的Application_Start(),注册Area路由。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace Libing.Portal.Web
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas(); // 注册Area Routing
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }
    }
}

3. 解决默认站点与Area相同Controller名称的Routing设置

  当默认站点与Area中有相同名称的Controller时,在Routing中添加namespace。

  Areas/Admin/AdminAreaRegistration.cs

using System.Web.Mvc;

namespace Libing.Portal.Web.Areas.Admin
{
    public class AdminAreaRegistration : AreaRegistration
    {
        public override string AreaName
        {
            get
            {
                return "Admin";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                name: "Admin_default",
                url: "Admin/{controller}/{action}/{id}",
                defaults: new { action = "Index", id = UrlParameter.Optional },
                namespaces: new string[] { "Libing.Portal.Web.Areas.Admin.Controllers" }
            );
        }
    }
}

  App_Start/RouteConfig.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

using Libing.Portal.Web.Models.Constraints;

namespace Libing.Portal.Web
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                namespaces: new string[] { "Libing.Portal.Web.Controllers" }
            );
        }
    }
}

4. 在默认网站与Area网站的链接

@Html.ActionLink("AdminIndex", "Index", new { controller = "Home", area = "Admin" })
时间: 2024-12-15 01:58:47

ASP.NET MVC系列:Area的相关文章

学习ASP.NET MVC系列 - 还有比这更简炼的吗?把复杂的事情变简单了,贡献啊!

转自 学习ASP.NET MVC系列: 学习ASP.NET MVC(一)--我的第一个ASP.NET MVC应用程序 学习ASP.NET MVC(二)--我的第一个ASP.NET MVC 控制器 学习ASP.NET MVC(三)--我的第一个ASP.NET MVC 视图 学习ASP.NET MVC(四)--我的第一个ASP.NET MVC 实体对象 学习ASP.NET MVC(五)--我的第一个ASP.NET MVC CURD页面 学习ASP.NET MVC(六)--我的第一个ASP.NET M

ASP.NET MVC 系列:使用Flurl制作可复用的分页组件

使用ASP.NET MVC查询时,一直使用MvcPaging组件,虽然需要自定义MvcPaging.Pager才能达到我想要的效果,但在没有较好的URL库时,还是这么用.分页的逻辑本来就不复杂,更重要的是最近发现了Flurl这个开源库,所以采用Flurl制作一个DIY的分页组件,核心是PagingModel文件,算法可能不是最优,但包含了主要的逻辑和实现关键点.由于在查询方面,我使用以下实践: 1.使用ViewModel封装查询参数 2.使用ViewModel作为View的Model类型 3.采

【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照

近期在开发小组在研究:BS项目中是利用'MVC框架'还是继续沿用'三层'的问题. 由于曾经的.NET项目大多数都是利用三层开发的,所以大多数人都可以对三层进行熟练地运用.而项目的開始我们也曾听说过MVC的概念,可是由于没有项目经验的原因,所以总是停留在理论层次的比較. 在后期的DRP项目中,了解到Model1和Model2模型,而Model2模型就是MVC的应用.DRP中我们採用jsp做View层用于显示:Servlet做Controller用于取得表单參数.调用业务逻辑.转向页面: 相同都是M

【.NET特供-第三季】ASP.NET MVC系列:传统WebForm网站和MVC网站运行机制对比

本文以图形化的方式,从'运行机制'方面对比传统WebForm网站和MVC网站. 请参看以下图形: 一.运行机制 当我们访问一个网站的时候,浏览器和服务器都是做了哪些动作呢? (本文只是提供一个简单的运行过程,有兴趣的找资料研究一下复杂的网络过程.) (一)WebForm网站运行机制 假设为:www.baidu.com/index.aspx 1.Http请求(物理地址:index.aspx) ①发送请求 浏览器向服务器发送请求报文,此时由IIS虚拟目录接受.(通过配置过IIS,把网站挂载在服务器上

【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对比(颠覆性理论)

       在[.NET特供-第三季]系列博客中的第一篇<ASP.NET MVC系列:MVC与三层图形对比>发表之后,引起了领导的注意.同时,开发小组内部在交流MVC和三层之间关系的时候,也感到非常的混沌.        在这里对上一篇文中所阐述的错误概念,向读者表示诚挚的歉意.同时,非常感谢米老师辛勤指导.关于'MVC与三层图形对比'将在本文中做出修正.     学习是一个过程,对于概念的理解并不是一蹴而就的,而是盲人摸象的理论,逐渐清晰.     首先,给大家看一张图. 接下来的内容,将

【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对比

最近在开发小组在研究:BS项目中是利用'MVC框架'还是继续沿用'三层'的问题. 由于以前的.NET项目大多数都是利用三层开发的,所以大多数人都能够对三层进行熟练地运用.而项目的开始我们也曾听说过MVC的概念,但是因为没有项目经验的原因,所以总是停留在理论层次的比较. 在后期的DRP项目中,了解到Model1和Model2模型,而Model2模型就是MVC的应用.DRP中我们采用jsp做View层用于显示:Servlet做Controller用于取得表单参数.调用业务逻辑.转向页面: 同样都是M

【ASP.NET MVC系列】浅谈ASP.NET MVC资源过滤和授权

最近比较忙,博客很久没更新了,很多博友问何时更新博文,因此,今天就花了点时间,写了本篇文章,但愿大家喜欢. 本篇文章不适合初学者,需要对ASP.NET MVC具有一定基础. 本篇文章主要从ASP.NET MVC 基架角度去分析MVC框架是如何实现资源过滤,资源授权,感兴趣的,欢迎阅读. 相关文章,请参与ASP.NET MVC系列 一 ASP.NET MVC框架验证机制 为了更加透彻地了解MVC的过滤机制,我简要地画了如下UML图. 下面,我们根据如上的UML图来简要分析一下. (一)MVC基架过

【转】【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式

ASP.NET MVC系列文章 原文地址:https://www.cnblogs.com/wangjiming/p/6275854.html [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作篇)(下) [04]浅谈ASP.NET框架 [05]浅谈ASP.NET MVC运行过程 [06]浅谈ASP.NET MVC 控制器 [07]浅谈ASP.NET MVC 路由 [08]浅谈AS

Asp.net MVC 基于Area的路由映射

对于一个较大规模的Web应用,我们可以从功能上通过Area将其划分为较小的单元.每个Area相当于一个独立的子系统,具有一套包含Models.Views和Controller在内的目录结构和配置文件.一般来说,每个Area具有各自的路由规则(URL模版上一般会体现Area的名称),而基于Area的路由映射通过AreaRegistration进行注册. 一.创建Areas 右键工程 -> 添加->区域 添加后生成一套包含Models.Views和Controller在内的目录结构和配置文件:只是