在 Visual Studio 2019 v16.4.5 的 ASP.NET Core MVC 專案上,按右鍵移到「加入
」是看不到「區域
」這個選項的。
所以 Areas(區域)得要自己手動加了,這邊就記錄一下手動新增 Areas 的步驟。
新增 Areas 資料夾
先在專案上按右鍵移到「加入
」,點擊「新增資料夾
」,建立名稱為 Areas
的資料夾。
依照特定結構新增 Area
接下來,假定我要新增 Admin
這個 Area,我就依照下面這個特定的結構把資料夾建起來。
- [ASP.NET Core MVC 專案]
- Areas
- [Area Name]
- Controllers
- Models
- Views
- Shared
- [Area Name]
- Areas
或者,也可以在 Areas 資料夾上按右鍵,移到「加入
」,選擇「區域
」,輸入 Area 名稱後就會幫我們產生好資料夾。
新增 Controller
在新增好的 Controllers 資料夾按右鍵移到「加入
」,點擊「控制器
」。
選擇自己想要的 Controller 類型後,就輸入 Controller 的名稱。
在 Controller 標記 AreaAttribute
在剛剛新增的 Controller 上標記 AreaAttribute
, 這個步驟相當重要,要讓 ASP.NET Core MVC 知道 Controller 是隸屬於哪一個 Area?
設定慣例路由
建議一定要設定慣例路由,避免找不到沒有指定屬性路由的 Action,在 Startup.cs
的 app.UseEndpoints()
裡面加入下面這段程式碼:
endpoints.MapControllerRoute(
name: "areas",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
將共用的 _ViewStart.cshtml 及 _ViewImports.cshtml 搬到根目錄
最後是將專案範本產生的 _ViewStart.cshtml 及 _ViewImports.cshtml 搬到應用程式的根目錄,如果不做這個動作,我們會發現 Area 裡面的 View 預設會套不到 _Layout。
到這邊 Area 算是新增完成了,那麼我們就把網站跑起來,看看剛剛新增的 Area 有沒有 Work?
2020-05-01 補充
感謝白大在留言區提醒告知,在「加入」->「新增 Scaffold 項目
」中,就有一個「MVC 區域
」可以選,而且從無到有幫我們建立一個 Area。