转载:http://www.lanhusoft.com/Article/217.html

在大型的ASP.NET mvc5项目中一般都有许多个功能模块,这些功能模块可以用Area(中文翻译为区域)把它们分离开来,比如:Admin,Customer,Bill。ASP.NET MVC项目中把各个功能分为不同Area的之后每一个Area都有独立的Controller,View文件结构。这样可以把这些功能分给不同的开发者同时开发而彼此之间不会冲突,这样的文件结构各司其职,直观明了,易于维护和管理。下面我们看看怎么在ASP.NET MVC5中创建一个Area和Area直接之间链接的处理。

一、ASP.NET MVC5中创建Area区域

选中我们的ASP.NET MVC项目,右键菜单,添加=》区域,这里我们取名为Admin,在项目根目录将会生成一个Admin文件夹,如下图:

我们来看这个Area是怎么在项目的起作用的。

我们来看Global.asax.cs的代码:

  1. public class MvcApplication : System.Web.HttpApplication
  2. {
  3. protected void Application_Start()
  4. {
  5. AreaRegistration.RegisterAllAreas();
  6. FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
  7. RouteConfig.RegisterRoutes(RouteTable.Routes);
  8. BundleConfig.RegisterBundles(BundleTable.Bundles);
  9. }
  10. }

第一行的代码:AreaRegistration.RegisterAllAreas();就是注册 ASP.NET MVC 应用程序中的所有区域。每一个区域它有自己的都有独立的Controller,View文件结构和路由配置,我们完全可以把ASP.NET MVC的区域看成一个ASP.NET MVC项目。

注意: RouteConfig.RegisterRoutes(RouteTable.Routes)在AreaRegistration.RegisterAllAreas();的后面。这一点很关键,你最好是不要改变这个顺序。之前我们谈到过ASP.NET MVC路由系统是按注册路由的先后顺序来匹配的,这里RegisterAllAreas在前面表示MVC路由系统会先去匹配Area中的路由配置规则,如果你改变了顺序可能会找到错误的Controller,发生意外的错误。

在ASP.NET MVC5的每个区域都有一个类:区域名+AreaRegistration,比如我们刚才建的一个Admin区域AdminAreaRegistration类:

  1. public class AdminAreaRegistration : AreaRegistration
  2. {
  3. public override string AreaName
  4. {
  5. get
  6. {
  7. return "Admin";
  8. }
  9. }
  10. public override void RegisterArea(AreaRegistrationContext context)
  11. {
  12. context.MapRoute(
  13. "Admin_default",
  14. "Admin/{controller}/{action}/{id}",
  15. new { action = "Index", id = UrlParameter.Optional }
  16. );
  17. }
  18. }

这个类的作用主要是用于标示区域名称和区域Controller的路由,可以看到路由规则为"Admin/{controller}/{action}/{id}",前面统一跟了一个Admin。

二、在Area区域的视图之间Action的链接跳转的处理

当在ASP.NET MVC项目中使用了AreaArea区域后,会涉及到不同Area的Action链接之间相互跳转,我使用Html.ActionLink有些地方需要注意。

1、同一个Area之间跳转

在Area区域的视图中生成指向同一个Area的Action链接时,你不需要做任何处理,当你调用Html.ActionLink时MVC框架自动去找当前Area的相应路由来生成Action的链接。如下:

  1. @Html.ActionLink("Click me", "About")

生成下面的html:

  1. <a href="/Admin/Home/About">Click me</a>

2、不同Area之间跳转

  1. @Html.ActionLink("Click me to go to another area", "Index", new { area = "Support" })

把Route中的area指定就可以了。

3、跳转到不带Area的Action

我们知道使用Html.ActionLink没有指定area,默认就是当前的area。有时我们需要链接到顶层的Controller的Action,就是不要带area,也很简单,只需要把area传空字符串就可以了。如下:

  1. @Html.ActionLink("Click me to go to another area", "Index", new { area = "" })

转载于:https://www.cnblogs.com/hanjun0612/p/9779842.html

ASP.NET MVC5使用Area区域相关推荐

  1. asp.net mvc5 设置Area下的为启动页

    只需修改App_Start文件夹下RouteConfig中RegisterRoutes方法 1 public static void RegisterRoutes(RouteCollection ro ...

  2. ASP.NET MVC5 网站开发实践(二) Member区域 - 用户部分(2)用户登录、注销

    上次实现了用户注册,这次来实现用户登录,用到IAuthenticationManager的SignOut.SignIn方法和基于声明的标识.最后修改用户注册代码实现注册成功后直接登录. 目录: ASP ...

  3. ASP.NET MVC5 高级教程 学习笔记

    // 本应用是ASP.NET MVC5 高级教程学习产物 // 2015-07-23 // 第一章 入门 // 第二章 控制器 // 第三章 视图 1.Install-Package Wrox.Pro ...

  4. [Asp.net MVC]Asp.net MVC5系列——第一个项目

    目录 概述 创建第一个项目 添加控制器 总结 概述 本教程是个人一步一步学习的总结,希望能帮到正在进入ASP.Net MVC5方向的朋友,个人也是准备进入ASP.NET MVC5领域,虽然艰辛,但是乐 ...

  5. ASP.NET MVC5 + EF6 入门教程 (6) View中的Razor使用

    ASP.NET MVC5 + EF6 入门教程 (6) View中的Razor使用 原文:ASP.NET MVC5 + EF6 入门教程 (6) View中的Razor使用 文章来源: Slark.N ...

  6. ASP.NET MVC5 与EF6学习系列

    最近学习使用MVC5和EF6,博客园搜索了一番,写下这篇文章记录,以便学习使用. 一.ASP.NET MVC5 网站开发 @洞庭夕照写的博客系列 ASP.NET MVC5 网站开发实践 - 概述 AS ...

  7. asp.net mvc5 oracle,ASP.NET MVC5网站开发用户注册(四)

    一.默认Web项目的更改 用户这部分还是自己做,所以删除自动生成的用户相关代码. 二.添加Member区域 在web项目上点右键 添加 区域Member. 添加Home控制器,选择MVC5控制器-空 ...

  8. ASP.NET MVC5 网站开发实践 - 概述

    前段时间一直在用MVC4写个网站开发的demo,由于刚开始学所有的代码都写在一个项目中,越写越混乱,到后来有些代码自己都理不清了.1月26日晚上在群里跟@怒放 他们讨论这个问题,结论是即使只是一个小d ...

  9. ASP.NET MVC5 网站开发实践

    http://www.cnblogs.com/mzwhj/p/3537145.html 前段时间一直在用MVC4写个网站开发的demo,由于刚开始学所有的代码都写在一个项目中,越写越混乱,到后来有些代 ...

最新文章

  1. 什么是 Delta 文件
  2. MATLAB学习笔记(一)
  3. 【业务知识】档案工作流程
  4. 操作系统(三十三)内存管理
  5. Mac上的抓包工具Charles
  6. 数据结构实验之查找五:平方之哈希表
  7. Python实例讲解 -- 认识wxpython 的 Frame
  8. 【IEEE独立出版/EI稳定检索】信息科学、计算机技术与交通运输征稿倒计时
  9. 值传递,引用传递,指针传递
  10. html5+css3方式实现mobie app的一些瓶颈
  11. 任务26:dotnet watch run 和attach到进程调试
  12. WayOs内置智能重启:自动计算UTC时间为本地时间,可以调整为几时重启
  13. 通俗理解同步IO\异步IO
  14. 一个直播例子:快速集成iOS基于RTMP的视频推流
  15. HTML学生个人网站作业设计:班级网站设计——上海学校 4页
  16. Java学习lesson 15
  17. SQL进阶之路03:三值逻辑和NULL
  18. 华中师大计算机专业陈鹏,华师男子不满工作分配流浪16年 与弟弟见面后拒回家...
  19. AutodeskInstallOnlineCheck_2.0.0.24.sfx检查提示
  20. 千寻位置 开发demo_专攻高精定位解决方案,「千寻位置」要解决自动驾驶车辆“我在哪儿”的问题...

热门文章

  1. 项目部署服务器 jstl,Springboot集成jsp及部署服务器实现原理
  2. Linux进阶之路————CentOS网络配置
  3. 数据列表的分页实现————分页敏捷开发
  4. android手机用户,[信息图]Android手机用户如何使用自己的设备?
  5. 删除字符串中的指定字符
  6. (组合数求模=乘法逆元+快速幂) Problem Makes Problem
  7. linux 显示文件名写到txt,C++获取某个路径下所有文件的文件名,读写TXT文件到新的文件...
  8. c语言 段位,C语言 段位
  9. python解决最优化问题_python实现最优化算法
  10. java对docker_如何在docker中运行java程序