今天在工作要实现这个多级area。其原因是这个项目需要多级的功能,大的类别里有小的类别,小的类别里有具体的功能项,每一个功能项还有若干动作Action,所以在菜单和mvc工程的结构上都需要有体现多级的元素,菜单是用的accordion,每一个大类就是accordion的一个pane,然后每一个小类就是用一个表格来表示的,每一个功能就是用单元格加一个链接来表示的。在网站目录结构上,area可以很方便地实现一级的目录结构,比如可以有admin, backoffice, logging, business reporting等area, 每一个area下可以若干个controllers和views,但是要实现多级的目录结构就没有人详细地写过,笔者在这里介绍一种实现多级目录结构的方法。

假设我们要实现如下的一些多级目录结构(这里举例就只用了两级, 更多级的道理是一样的):

Admin

Access Management

Function Management

Data Permission Management

Backoffice

Risk analysis

Risk settings

Risk reporting

Risk transfer

第一步:在MVC project里加入Admin和Backoffice两个Area,结果如图1:

第二步, 这里就以Admin为例子, 在其中加入AccessManagement, FunctionManagement, DataPermissionManagement几个Folder,如图2:

第三步,将Controllers, Models, Views, AdminAreaRegistration.cs拷贝到AccessManagement, FunctionManagement, DataPermissionManagement目录,然后把Admin之下的Controllers, Models, Views, AdminAreaRegistration.cs全部都删除。最后变成这样的:

第四步:将AccessManagement目录里的AdminAreaRegistration改名成AccessManagementAreaRegistration.cs, 里面的内容也改成:

using System.Web.Mvc;

namespace MvcApplication1.Areas.Admin.AccessManagement
{
public class AccessManagementAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Admin/AccessManagement";
}
} public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_AccessManagement_default",
"Admin/AccessManagement/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
}

我们需要为FunctionManagement和DataPermissionManagement也做同样的事情。
这样我们就为创建controller做好了准备。

如果我们需要给AccessManagement创建一个controller, 右键点"AccessManagement"目录下的Controllers目录,选择Add -> Controllers,然后创建此controller对应的View。这样,就可以创建好多级目录。

在访问的时候,其访问URL是http://<hostname>:<portnumber>/Admin/AccessManagement/, 其他的二级目录的做法是一样的。

转自:http://www.cnblogs.com/mikelij/archive/2013/06/03/3116195.html

asp.net mvc 4多级area实现技巧的更多相关文章

  1. asp.net mvc多级目录结构和多级area实现技巧

    今天在工作要实现这个多级area.其原因是这个项目需要多级的功能,大的类别里有小的类别,小的类别里有具体的功能项,每一个功能项还有若干动作Action,所以在菜单和mvc工程的结构上都需要有体现多级的 ...

  2. ASP.NET MVC系列:Area

    1. Area简介 ASP.NET MVC Area机制构建项目,可以将相对独立的功能模块切割划分,降低项目的耦合度. 2. Area设置Routing 新建Admin Area后,自动创建Admin ...

  3. 在ASP.NET MVC中使用Area

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

  4. ASP.NET MVC 使用TryUpdateModel 更新的技巧

    有使用 ASP.NET MVC 的朋友應該會對於 TryUpdateModel 有一定的認知,他不但可以利用 Metadata 來做欄位的驗證確保資料的正確性,也可以指定更新的條件以及不更新的條件來達 ...

  5. 在ASP.NET MVC中使用Area区域

    在大型的ASP.NET mvc5项目中一般都有许多个功能模块,这些功能模块可以用Area(中文翻译为区域)把它们分离开来,比如:Admin,Customer,Bill.ASP.NET MVC项目中把各 ...

  6. ASP.NET MVC中几个运用技巧

    1. Razor Helpers 的运用:例如,定义好 ViewBag.Message = "Welcome to ASP.NET MVC!";我要在界面上显示"Welc ...

  7. [ASP.NET MVC 小牛之路]08 - Area 使用

    ASP.NET MVC允许使用 Area(区域)来组织Web应用程序,每个Area代表应用程序的不同功能模块.这对于大的工程非常有用,Area 使每个功能模块都有各自的文件夹,文件夹中有自己的Cont ...

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

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

  9. ASP.NET MVC 创建 Area 以及使用

    此博客全乘抄袭,只为以后自己能再次用到 参考链接 http://www.cnblogs.com/willick/p/3331519.html ASP.NET MVC允许使用 Area(区域)来组织We ...

随机推荐

  1. 大型vue单页面项目优化总结

    这是之前在公司oa项目优化时罗列的优化点,基本都已经完成,当时花了点心思整理的,保存在这里,方便以后其他项目用到查漏补缺. 1.打包文件中的app.js文件放入cdn,加快页面首次加载速度 2.提取公 ...

  2. Coloring Dominoes

    问题 E: Coloring Dominoes 时间限制: 1 Sec  内存限制: 128 MB提交: 279  解决: 95[提交] [状态] [讨论版] [命题人:] 题目描述 We have ...

  3. Spring Struts里用到的设计模式

    Bean工厂的Factory模式 AOP的Proxy模式

  4. python基础-匿名函数、内置函数、正则表达式、模块

    1. 匿名函数 1.1 有名函数 有名函数:定义了一个函数名,函数名指向内存地址:通过函数名进行访问.函数名加括号就可以运行有名函数,例如:func() def func(x, y, z = 1): ...

  5. java源码阅读Object

    1 类注释 Class {@code Object} is the root of the class hierarchy. Every class has {@code Object} as a s ...

  6. 5.6(java学习笔记) queue

    一.queue接口 queue的中文意思是队列,是一种以先进先出方式处理数据的集合. 队列还提供额外的插入.提取和检查操作.这些方法都以两种形式存在:一种在操作失败时抛出异常,另一种返回特殊值(根据操 ...

  7. Spark1.4远程调试

    1)首先,我们是在使用spark-submit提交作业时,使用 --driver-java-options ”-Xdebug -Xrunjdwp:transport=dt_socket,server= ...

  8. 美团在Redis上踩过的一些坑-3.redis内存占用飙升(转载)

     一.现象:     redis-cluster某个分片内存飙升,明显比其他分片高很多,而且持续增长.并且主从的内存使用量并不一致.   二.分析可能原因:  1.  redis-cluster的bu ...

  9. ubuntu下python3及idle3的安装

    一.使用以下命令检查自己的系统下是否有python3 python3 --version 如果出现类似“command not found",则说明你需要安装python3.如果能够出现py ...

  10. RxJava 2.x 理解-1

    在RxJava 1.x 系列中,讲解了RxJava的大致用法,因为现在都用RxJava 2了,所以Rxjava 1就不细讲,主要来学习RxJava 2. 基本使用: /** * rajava2 的基本 ...