MVC ASP.NET MVC5使用Area区域

MVC  ASP.NET MVC5使用Area区域

一.为什么要使用area?

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

二.配置:

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

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

1
2
3
4
5
6
7
8
9
10
11
public class Global : HttpApplication
  {
      void Application_Start(object sender, EventArgs e)
      {
          AreaRegistration.RegisterAllAreas();
          BootStrapper.ConfigureDependencies();
          GlobalConfiguration.Configure(WebApiConfig.Register);
          FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
          RouteConfig.RegisterRoutes(RouteTable.Routes);
      }
  }

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

在ASP.NET MVC5的每个区域都有一个类:区域名+AreaRegistration,比如BaseManage区域:

复制代码
public class BaseManageAreaRegistration : AreaRegistration 
    {
        public override string AreaName 
        {
            get 
            {
                return "BaseManage";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context) 
        {
            context.MapRoute(
                "BaseManage_default",
                "BaseManage/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );
        }
    }
复制代码

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

三.在Area区域的视图之间Action的链接跳转是如何处理?

1.同一个区域跳转:

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

2.不同区域跳转:

@Html.ActionLink("Click me", "About",new { area = "Support")

3.调整到无区域:

@Html.ActionLink("Click me", "About",new { area = "")

 

posted @   土豆哥  阅读(427)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示