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

今天在工作要实现这个多级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/, 其他的二级目录的做法是一样的。

ASP.NET MVC默认的文件组织和URL访问都是一级,我们通常要将一个功能模块组织到一个目录下。方法是:
1、文件组织
 
分别在Controllers和Views文件夹下建议CaiGou文件夹,然后将CaiGou模块的CV将到对应文件夹下

2、URL Routing

[c-sharp] view plaincopy

  1. //采购部分路由
  2. routes.MapRoute(
  3. "CaiGou", // 路由名称
  4. "CaiGou/{controller}/{action}/{id}", // 带有参数的 URL
  5. new { controller = "AddCaiGou", action = "Index", id = UrlParameter.Optional } // 参数默认值
  6. );
  7. //默认路由
  8. routes.MapRoute(
  9. "Default", // 路由名称
  10. "{controller}/{action}/{id}", // 带有参数的 URL
  11. new { controller = "Home", action = "Index", id = UrlParameter.Optional }
  12. );

3、Contorller调用View

[c-sharp] view plaincopy

  1. public ActionResult Index()
  2. {
  3. return View("~/Views/CaiGou/AddCaiGou/Index.aspx");
  4. }

4、访问

http://localhost:2325/CaiGou/AddCaiGou

“AddCaiGou”为Controller,看起来有点像Action:)名字没取好
全路径http://localhost:2325/CaiGou/AddCaiGou/Index

时间: 2024-10-18 08:03:21

asp.net mvc多级目录结构和多级area实现技巧的相关文章

asp.net MVC 多系统目录结构

学习了几天的mvc5,发现vs把所有的控制器都放在同一个目录Controllers目录下,细想一下,假如一个项目包含几个系统: 行政办公系统.培训管理系统.督办管理系统.会议管理系统…… 如果还把控制器都放在同一个目录下,那就只有一个字,乱! 如果把一个系统部署成对应一套mvc目录结构(即对应一个应用或站点),那就变成两个字,更乱!因为这样就无法共享css.js.图片等资源. 有问题找度娘,发现微软已经提供解决方案,那就是使用Areas,一个Area对应上面的一个系统,添加方法: 例如我添加两个

ASP.NET MVC使用Areas后怎样获取Area(区域)的名称

写此随笔,目的只为今后在ASP.NET MVC项目中再用到Area(区域)时作为备查. 获取当前Area(区域)名称的方法是: ViewContext.RouteData.DataTokens["area"] 这样,我就可以通过下面三个语句,分别获取用户当前访问的Area.Controller和Action string areaName = filterContext.RouteData.DataTokens["area"] == null ? "&qu

Asp.net MVC 4新项目中创建area的后续操作

Asp.net MVC 4新项目中创建area后,往往HomeController与area的HomeController路由发生混淆,需要手工设置一些地方避免mvc无法识别默认路由的状况. 无废话具体步骤: 1. 检查早Global.asax和\App_Start\RouteConfig.cs中是否已经自动添加了AreaRegistration.RegisterAllAreas();如不存在,进入第2步,否则第3步 2. 在\App_Start\RouteConfig.cs中,添加AreaRe

asp.net mvc 多级目录结构

[email protected] ASP.NET MVC默认的文件组织和URL访问都是一级,我们通常要将一个功能模块组织到一个目录下.方法是:1.文件组织 分别在Controllers和Views文件夹下建议CaiGou文件夹,然后将CaiGou模块的CV将到对应文件夹下 2.URL Routing [c-sharp] view plaincopy //采购部分路由 routes.MapRoute( "CaiGou", // 路由名称 "CaiGou/{controller

ASP.NET MVC学习目录

一.ASP.NET MVC原理详解 1.了解MVC架构模式 3.学习ASP.NET MVC的必备语言知识 4.MVC中的razor语法详解 5.ASP.NET MVC路由系统机制详细讲解 6.ASP.NET MVC输出生成Url链接详解 7.自定义ASP.NET MVC路由系统截获MVC的路由请求 8.ASP.NET MVC使用Area区域,使用功能模块清晰明了 9.ASP.NET MVC的Controller介绍 10.ASP.NET MVC的Controller接收输入详解 11.ASP.N

ASP.NET MVC 项目文件夹结构

首先,打开Visual Studio, 新建一个demo 项目的solution,选择 Blank Soution. 第二步,创建文件夹,按自己的需求创建.在这个Demo 中,我将创建4个文件夹. Presentation: 主要放MVC web 项目 Tests: 放单元测试项目  Libraries: 放数据处理项目(可以认为这是Model) Plugins: 放一些插件 第三步,创建项目文件,把项目文件创建到相应的文件夹里面. 创建empty MVC project,注意,这里需要手动输入

asp.net mvc 4多级area实现技巧

今天在工作要实现这个多级area.其原因是这个项目需要多级的功能,大的类别里有小的类别,小的类别里有具体的功能项,每一个功能项还有若干动作Action,所以在菜单和mvc工程的结构上都需要有体现多级的元素,菜单是用的accordion,每一个大类就是accordion的一个pane,然后每一个小类就是用一个表格来表示的,每一个功能就是用单元格加一个链接来表示的.在网站目录结构上,area可以很方便地实现一级的目录结构,比如可以有admin, backoffice, logging, busine

Linux杂谈: 树形显示多级目录--tree

最近写博客的时候偶尔会需要将文件目录结构直观地列出来,例如python的包结构. 于是在网上搜了搜,发现了一个Linux下还不错的工具--tree tree 可以很直观地显示多级目录结构. 1. 安装方法 Ubuntu上直接 sudo apt install tree 2. 几个比较常规的用法: 1. 显示目录结构 [[email protected] Test]# tree . └── Level-1 ├── L1-File-1.txt ├── L1-File-2.txt ├── Level-

ASP.NET MVC5(一):ASP.NET MVC概览

ASP.NET MVC概览 ASP.NET MVC是一种构建Web应用程序的框架,它将一般的MVC(Model-View-Controller)模式应用于ASP.NET框架. ASP.NET MVC模式简介 MVC将Web应用程序划分为三个主要的部分,以下是MSDN给出的定义: 模型(Model):模型对象是实现应用程序数据域逻辑的应用程序部件. 通常,模型对象会检索模型状态并将其存储在数据库中. 例如,Product 对象可能会从数据库中检索信息,操作该信息,然后将更新的信息写回到 SQL S