1. 程式人生 > >ASP.NET Core MVC 之區域(Area)

ASP.NET Core MVC 之區域(Area)

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

&n