为了在 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
,内容可以是这样的:
[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();
}
}
现在,为了使其正常工作,您需要为所有返回 1 的操作创建视图。视图的层次结构就像非区域视图文件夹中的层次结构一样:
现在,您应该可以出发了!
问题:如果我想在我的区域内有另一个控制器怎么办?
Answer:
只需在旁边添加另一个控制器即可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/...