区域 (Area) 是一个 ASP.NET MVC 功能, 用于将相关功能组织为一个单独的命名空间 (用于路由) 和文件结构 (用于视图). 使用区域通过向控制器和操作添加 一个路由参数(area) 来创建用于路由目的的层次结构.
区域提供了一种将大型 ASP.NET Core MVC web 应用程序分割成更小功能分组的方法. 一个区域实际上是应用程序内的 MVC 结构. 对于大型应用程序, 将应用程序分成单独的该机功能区域是有利的. 例如, 具有多个业务单位的电子商务应用的结账, 计费, 搜索等.
在 ASP.NET Core MVC 项目中, 一个区域可以定义为具有自己的一组控制器, 视图和模型的较小的功能单元.
下列情况可以考虑使用区域:
应用程序由多个高级功能组件组成, 应在逻辑上分开.
想要划分 MVC 项目, 使每个功能区域可以单独工作.
区域特点:
ASP.NET Core MVC 应用程序可以有任意数量的区域.
每个区域都有自己的控制器, 视图和模型.
允许将大型 MVC 项目组织成可以独立工作的多个高级组件.
支持具有相同名称的多个控制器 -- 只要它们所在区域不同.
配置区域路由在 ASP.NET Core MVC 之路由(Routing) 中有介绍. 区域视图检索路径和正常视图一致, 默认的位置可以通过 Microsoft.AspNetCore.Mvc.Razor.RazorViewEngineOptions 的 AreaViewLocationFormats 方法被修改.
例如, 下面代码中的文件夹名为 Area, 它将被修改为 Categories :
- services.Configure<RazorViewEngineOptions>(options =>
- {
- options.AreaViewLocationFormats.Clear();
- options.AreaViewLocationFormats.Add("/Categories/{2}/Views/{1}/{0}.cshtml");
- options.AreaViewLocationFormats.Add("/Categories/{2}/Views/Shared/{0}.cshtml");
- options.AreaViewLocationFormats.Add("/Views/Shared/{0}.cshtml");
- });
需要注意的一点是, Views 文件夹的结构是唯一需要重点考虑的, 其他文件夹如 Controller 和 Modes 的内容并不重要. 因为 Controller 和 Modes 的内容只是被编译成 .dll 代码, 而不是作为 Views 的内容直到视图被请求.
在发布时需要注意发布 Area 文件夹, 需要发布 Area 文件夹下的所有 view .
来源: https://www.cnblogs.com/afei-24/p/11379582.html