区域(Area)是一个 ASP.NET MVC 功能,用于将相关功能组织为一个单独的命名空间(用于路由)和文件结构(用于视图)。使用区域经过向控制器和操做添加 一个路由参数(area)来建立用于路由目的的层次结构。html
区域提供了一种将大型ASP.NET Core MVC Web 应用程序分割成更小功能分组的方法。一个区域其实是应用程序内的 MVC 结构。对于大型应用程序,将应用程序分红单独的该机功能区域是有利的。例如,具备多个业务单位的电子商务应用的结帐,计费,搜索等。post
在 ASP.NET Core MVC 项目中,一个区域能够定义为具备本身的一组控制器,视图和模型的较小的功能单元。url
下列状况能够考虑使用区域:spa
应用程序由多个高级功能组件组成,应在逻辑上分开。code
想要划分 MVC 项目,使每一个功能区域能够单独工做。orm
区域特色:htm
ASP.NET Core MVC 应用程序能够有任意数量的区域。blog
每一个区域都有本身的控制器,视图和模型。路由
容许将大型 MVC 项目组织成能够独立工做的多个高级组件。get
支持具备相同名称的多个控制器 —— 只要它们所在区域不一样。
配置区域路由在 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 。