Asp.net-Mvc-Routing

如何在 ASP.NET Core 中使用區域

  • April 10, 2016

如何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/...

引用自:https://stackoverflow.com/questions/36535511