ASP.NET Core MVC 之區域(Area)

  區域(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 。

相關文章
相關標籤/搜索