如何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
在应用程序的根目录中创建一个名为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/...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句