如何在 ASP.NET Core 中使用区域
?
我有一个需要管理部分的应用程序。该部分要求将其 View 放置在该区域中。所有以 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
的文件夹,并在前者中创建另一个名为 Admin
的文件夹,同时在 Admin
中创建这些文件夹( ViewComponent 是可选的):
现在我们在Controllers
文件夹中创建一个名为AdminController
的 Controller ,内容可以是这样的:
[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();
}
}
现在为了使其正常工作,您需要为所有返回一个的操作创建 View 。 View 的层次结构就像非区域 View 文件夹中的层次结构:
现在,您应该可以出发了!
问题: 如果我想在我的区域内有另一个 Controller 怎么办?
答案:
只需在 AdminController
旁边添加另一个 Controller 并确保路由如下所示:
[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/...
关于asp.net-mvc-routing - 如何在 ASP.NET Core 中使用区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36535511/