【转】MVC5中的区域(Areas)
2024-10-15 19:24:47
MVC本身提倡的就是关注点分离。但是当项目本身的业务逻辑足够复杂,如果所有的业务逻辑都写个Controller文件夹下面的时候,你会看到非常庞大的各种命名的Controller,这个时候区域的作用就非常明显了,将不同的模块通过区域加以区分,简单明了。
添加区域:
新建的MVC工程是没有区域的。点击项目右键->添加->区域,输入区域名称。.net会自动在项目下添加“Areas”文件夹,并在该文件夹下创建对应的区域的文件夹。创建一个“test”的区域,在区域下添加控制器“default”,将“default”控制器内容改为:
[RouteArea("test")]
[RoutePrefix("default")]
public class Default1Controller : Controller
{
[Route("index")]
public ActionResult Index()
{
return View();
}
}
注册路由:
MVC项目创建后悔自动生成文件“Global.asax”文件。找到Application_Start函数中的RouteConfig.RegisterRoutes(RouteTable.Routes).进入RegisterRoutes,在其中添加代码 routes.MapMvcAttributeRoutes()
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapMvcAttributeRoutes();//注册属性路由 routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
删除AreaRegistration:
当你创建新的区域时,工程会自动在区域下创建AreaRegistration。比如创建default控制器后,test区域的文件夹下会自动生成“testAreaRegistration.cs”,这个文件是MVC5以前的版本用来注册路由的。在MVC5中由于在Global.asax注册了属性路由,所以可以直接把这个文件删了,否则也会出现找不到路由的错误。内容大致是:
public class testAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "test";
}
} public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"test_default",
"test/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
然后就可以直接通过路由的方式访问Areas中的控制器了:
<a class="btn btn-default" href="/test1/default/index">test »</a>
最新文章
- Cache的使用
- paas架构之docker——安装
- android JNI调用(转)
- using详解(C#)
- CentOS 6.4安装本地yum源,并安装X Window System
- memcachedb-持久化存储的缓存系统
- 转:关于视频H264编解码的应用实现
- git的安装已经连github
- python学习day8
- web 开发规范
- MTU &; MSS 详解记录(转)
- chapter 12_2 保存无环的table
- Django项目及应用的创建
- RESTEASY ,从学会使用到了解原理。
- [quartz] - Cron表达式举例
- Linux下Mongodb安装和启动配置 原
- centos7配置svn钩子hooks脚本自动同步代码到项目目录
- [转]如何在本地apache上架设多个站点
- react native 学习之 native modules
- ios 为什么拖拽的控件为weak 手写的strong
热门文章
- Ubuntu ssh的使用
- AMD 规范以及如何将AMD转变为CommonJS
- 字符串格式化 String.format() 案例
- css 实现文字过长变成省略号(包含单行的and多行的)
- 使用__doPostBack函数来达到使用客户端的控件来调用服务器端的函数的--小结
- ASP.NET中的MD5加密
- 告诉你GetDC()没有释放造成的后果
- 单点登录CAS使用记(七):关于服务器超时以及客户端超时的分析
- Qt5-控件-QMenu,QMenuBar-菜单栏详解-菜单热键-菜单校验功能
- Yum 安装 zabbix...