本文参考:http://www.cnblogs.com/willick/p/3331519.html

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

2、新建一个Area,和一个空的MVC程序一样,只是多了一个继承自AreaRegistration的类,该类如下:

    public class MyAreaAreaRegistration : AreaRegistration{public override string AreaName{get{return "MyArea";}}        //定义了一个默认路由,路由的名字一定要与整个应用程序的都不一样public override void RegisterArea(AreaRegistrationContext context){context.MapRoute("MyArea_default","MyArea/{controller}/{action}/{id}",new { action = "Index", id = UrlParameter.Optional });}}

RegisterArea 方法不需要我们手动去调用,在 Global.asax 中的 Application_Start 方法已经有下面这样一句代码为我们做好了这件事:

protected void Application_Start()
{AreaRegistration.RegisterAllAreas();WebApiConfig.Register(GlobalConfiguration.Configuration);FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);RouteConfig.RegisterRoutes(RouteTable.Routes);BundleConfig.RegisterBundles(BundleTable.Bundles);
}

3、如果我们现在在根目录的 Controller 文件夹中添加一个名为 Home 的 Controller,Areas文件夹下同样添加一个名为Home的Controller,然后我们通过把URL定位到 /Home/Index,路由系统无法匹配到根目录下的 Controller。这就是Controller的歧义。为了避免这种歧义,需要在RouteConfig.cs文件中定义的路由中加上对应的 namespaces 参数:

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[] { "MvcApplication1.Controllers" });
}

4、Area生成链接:

//在Area中生成当前Area的URL链接
@Html.ActionLink("Click me", "About")//生成指向Support这个Area的URL链接
@Html.ActionLink("Click me to go to another area", "Index", new { area = "Support" }) //在当前Area生成指根目录某个controller的链接,那么只要把area变量置成空字符串
@Html.ActionLink("Click me to go to top-level part", "Index", new { area = "" })

转载于:https://www.cnblogs.com/wangwust/p/6386660.html

【ASP.NET MVC 学习笔记】- 09 Area的使用相关推荐

  1. 【ASP.NET MVC 学习笔记】- 07 使用 Entity Framework

    本文参考:http://www.cnblogs.com/willick/p/3304534.html 1.ORM(Object Relation Mapping)工具,是为了解决"关系数据库 ...

  2. 【ASP.NET MVC 学习笔记】- 06 在MVC中使用Ninject

    本文参考:http://www.cnblogs.com/willick/p/3299077.html 1.在ASP.NET MVC中一个客户端请求是在特定的Controller的Action中处理的. ...

  3. 【ASP.NET MVC 学习笔记】- 16 Model Binding(模型绑定)

    本文参考:http://www.cnblogs.com/willick/p/3424188.html. 1.Model Binding是Http请求和Action方法之间的桥梁,是MVC框架根据Htt ...

  4. 【ASP.NET MVC 学习笔记】- 10 Controller和Action(1)

    本文参考:http://www.cnblogs.com/willick/p/3331521.html 1.继承IController接口,示例代码将当前请求的Controller和Action打印到浏 ...

  5. .NET MVC 学习笔记(一)— 新建MVC工程

    一..NET MVC 学习笔记(一)-- 新建MVC工程 接触MVC有段时间了,一直想找机会整理一下,可是限于文笔太差,所以一直迟迟羞于下手,想到最近做过的MVC项目也有一些了,花点时间整理一下方便以 ...

  6. ASP.NET MVC 初学笔记.3 MVC5、EF、RDLC实现报表操作

    在ASP.NET的研究学习中又要用到报表,比如在OA系统里实现凭证.文件等,报表是一个必不可少的东西,但百度了一圈,发现讲得最多的还是水晶报表等第三方报表,好像微软原装的RDLC报表随着MVC的升级渐 ...

  7. Spring MVC 学习笔记 对locale和theme的支持

    Spring MVC 学习笔记 对locale和theme的支持 Locale Spring MVC缺省使用AcceptHeaderLocaleResolver来根据request header中的 ...

  8. ASP.NET MVC学习之路由篇(2)

    ASP.NET MVC学习之路由篇(2) 原文:ASP.NET MVC学习之路由篇(2) 继ASP.NET MVC学习之路由篇(1)后继续学习. 7.解决与物理路径的冲突 当发送一个请求至ASP.NE ...

  9. ASP.NET MVC学习资料 新增几个开源项目

    ASP.NET MVC学习资料 新增几个开源项目 ASP.NET MVC MSDN API:  System.Web.Mvc Namespace (暂无中文版):  http://msdn.micro ...

最新文章

  1. 【重磅】Tensorflow2.0实现29种深度强化学习算法大汇总
  2. easyui表格编辑事件_Unity手游开发札记——从Odin插件聊基于元数据的编辑器实现
  3. Leetcode 187.重复的DNA序列
  4. Linux shell 脚本中, $@ 和$# 分别是什么意思?
  5. CSDB Blog快速备份程序-备份你自己的Blog
  6. ubuntu下使用dos2unix
  7. [UE]EpicGames Launcher 添加/识别本地已有编辑器版本
  8. (转载)奇谈怪论:从容器想到去IOE、去库存和独角兽
  9. 怎么引流推广?10种有效引流吸粉方法
  10. ai画面怎么调大小_Adobe Illustrator(Ai)里怎么改变图像大小,快捷键是什么?
  11. asterisk(星号)中Dialplan基础:Answer, Playback, and Hangup Applications
  12. linux 拼音输出繁体_shell中如何得到中文的拼音?
  13. HTML5 移动应用开发的生态环境简介
  14. 树莓派usb摄像头网络监控(定时拍照+网络存储)
  15. python中关于圆的代码
  16. git创建密钥连接的方法
  17. 织梦.html和htm,织梦dedecms之article_article.htm(文章内容页模板)介绍
  18. seata源码分析之全局事务的开启跟xid的传递
  19. 如何快速匹配合适的e-HR系统
  20. flashcharge充电协议_拆解报告:iQOO 55W FlashCharge2.0超级闪充车充iCH2055

热门文章

  1. linux 删除桌面环境变量,linux下export命令添加、删除环境变量(转载)
  2. Windows Print Spooler 远程代码执行漏洞(CVE-2021-1675)
  3. SQLSERVER中RANK OVER(PARTITION BY)的用法
  4. linux windows死机,linux死机的处理方式
  5. 解决 ImportError: No module named 'pip._internal'问题
  6. nested set model应用系列文章-基于后根跳跃遍历的规则匹配算法
  7. IKAnalyzer实现扩展词库+动态更新词库的方法
  8. 学习Vim 全图解释
  9. tinymce引入后未显示_继金博大后再弃一子!大商接连关闭在郑亏损店面,未来或布局高端购物中心...
  10. 4-字符转换及所在位置