博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net mvc多级目录结构和多级area实现技巧
阅读量:7023 次
发布时间:2019-06-28

本文共 2554 字,大约阅读时间需要 8 分钟。

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

 

ASP.NET MVC默认的文件组织和URL访问都是一级,我们通常要将一个功能模块组织到一个目录下。方法是:

1、文件组织
 
分别在Controllers和Views文件夹下建议CaiGou文件夹,然后将CaiGou模块的CV将到对应文件夹下

 

2、URL Routing

 

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

 

 

3、Contorller调用View

 

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

 

 

4、访问

“AddCaiGou”为Controller,看起来有点像Action:)名字没取好

全路径
 

转载于:https://www.cnblogs.com/tinya/p/4655020.html

你可能感兴趣的文章
高性能缓存服务器 nuster v1.8.8.1 发布,支持 HTTP/2,多线程
查看>>
[译] 用 Flutter 开发你的第一个应用程序
查看>>
iOS学习笔记30 系统服务(三)蓝牙
查看>>
说说如何使用 vue-router 插件
查看>>
强大的代码保护软件 .NET Reactor使用教程(一):界面各功能说明
查看>>
Java并发编程:synchronized、Lock、ReentrantLock以及ReadWriteLock的那些事儿
查看>>
警告忽略
查看>>
Java Bean + 注册验证
查看>>
以太坊经典升级网络协议确保采矿保持活力
查看>>
通过mysql 插入一句话***
查看>>
centos 分区扩容
查看>>
JBoss EAP 6 monitoring using remoting-jmx and Zabbix
查看>>
邮件服务器
查看>>
OOAD-设计模式-原型模式
查看>>
Java FAQ(2)
查看>>
JavaScript常用事件总结
查看>>
squid在企业网中的应用
查看>>
主元素 Majority Element
查看>>
关于加密的一些笔记
查看>>
MySQL并发处理
查看>>