Asp.net-Mvc-Routing
如何在 ASP.NET Core 中使用區域
如何
Area在 ASP.NET Core 中使用?我有一個需要管理部分的應用程序。此部分要求將其視圖放置在該區域中。所有以開頭的請求
Admin/都需要重定向到該區域。
為了在 ASP.NET Core 應用程序中包含區域,首先我們需要在
Startup.cs文件中包含正常路由(最好將其放在任何非區域路由之前):在 Startup.cs/Configure 方法中:
app.UseMvc(routes => { routes.MapRoute("areaRoute", "{area:exists}/{controller=Admin}/{action=Index}/{id?}"); routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); });然後
Areas在 app root 中創建一個文件夾,Admin在前者中創建另一個命名,同時在其中創建這些文件夾Admin(ViewComponent 是可選的):
Controllers現在我們在名為的文件夾中創建一個控制器AdminController,其內容可以是:[Area("Admin")] [Route("admin")] public class AdminController : Controller { public AdminController() { // do stuff } public IActionResult Index() { return View(); } [Route("[action]/{page:int?}")] public IActionResult Orders() { return View(); } [Route("[action]")] public IActionResult Shop() { return View(); } [Route("[action]/newest")] public IActionResult Payments() { return View(); } }現在為了讓它工作,您需要為所有返回一個的操作創建視圖。視圖的層次結構就像您在非區域視圖文件夾中的那樣:
現在,你應該好好去!
問題: 如果我想在我的區域內有另一個控制器怎麼辦?
回答:
只需在旁邊添加另一個控制器
AdminController並確保路由如下所示:[Area("Admin")] [Route("admin/[controller]")] public class ProductsController : Controller { public ProductsController() { // } [Route("{page:int?}")] public IActionResult Index() { return View(); } }重要的部分是
[Route("admin/[controller]")]。有了它,您可以保持路由的風格admin/controller/action/...

