在 ASP.NET Core MVC 中使用 Areas

在 ASP.NET Core MVC 中使用 Areas

  • 为什么要用 Areas
  • 怎么用 Areas
  • ⚠️使用注意

为什么要用 Areas

使用 Areas ,可以将应用程序中不同的业务模块分类,每个业务模块都可以有自己的一组 Razor Pages、Controller、View 和 Model,可以更方便的开发和维护。

怎么用 Areas

  1. 在项目根目录下添加 Areas 文件夹
  2. 在 Areas 下添加业务文件夹(如 Test)
  3. 在 Test 文件夹下添加 Controllers 和 Views 文件夹
  4. 这样 Areas 的文件结构就搭完了,见下图:

在这里插入图片描述

  1. 在开发 Controllers 的时候,有一点需要注意,Areas 下的 Controller 需要添加 Area 属性,见下图:

在这里插入图片描述

  1. 再就是路由有点小改动,如果想匹配到 Areas 下面的 Controller,需要增加以下路由规则,有两种写法:

1// 第一种写法 2endpoints.MapControllerRoute( 3 name: "area", 4 pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"); 5 6
1// 第二种写法 2// Test 是 Areas 文件夹下业务文件夹的名称 3endpoints.MapAreaControllerRoute( 4 name: "area", 5 areaName: "Test", 6 pattern: "Test/{controller=Home}/{action=Index}/{id?}"); 7 8

在这里插入图片描述

⚠️使用注意

  • 如果想让 Areas 文件夹里面的 View 和外面的 View 使用统一的布局,可以将 _ViewStart.cshtml 文件,放到项目根目录下,如下图:

在这里插入图片描述

  • 当然 Areas 文件夹下的 View 也可以使用单独的页面布局,可以建立自己的 Shared 文件夹,文件夹结构见下图:

在这里插入图片描述

  • 页面间的跳转,要跳转到 Areas 下的 Controller,除了要指定 Controller 和 Action,还要指定 area,area 的值是业务文件夹的名称,所以跳转链接就变成了这样:

1<a asp-area="Test" asp-controller="Home" asp-action="Index"> ... </a> 2 3

官网使用教程🔗:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/controllers/areas?view=aspnetcore-5.0

代码交流 2021