我喜欢ASP .NET Core中的区域功能。
例如,admin部分位于〜/ Areas / Admin文件夹中,其中包含自己的Views,Controllers和Models。管理区域的示例路线是 /domain.com/admin/users/manage
假设我有另一个名为Customers的区域,它可以包含所有与客户相关的内容。客户区域仅具有与CRUD操作相关的功能。所以我需要客户区的路线如 domain.com/customer/create 。但据我所知,实现这一目标的唯一方法是将视图放在公共Views文件夹中。
有没有办法在Regions文件夹中组织客户相关的东西,并通过我上面提到的网址访问它?
答案 0 :(得分:0)
我发现最简单的方法是使用属性路由,你必须首先在RouteConfig.cs中为ASP.NET MVC启用它。在ASP.NET核心中,我不确定你是否必须启用它,我相信它在Startup.cs中?
public static void RegisterRoutes(RouteCollection routes)
{
//routes.AppendTrailingSlash = false;
//routes.LowercaseUrls = true;
routes.MapMvcAttributeRoutes();
....
}
现在位于您的客户区控制器
[RouteArea("Customer", AreaPrefix = "")]
public class UsersController : Controller
{
//Customer/Create
[Route("Customer/Create")]
public ActionResult Create()
{
}
}
RouteArea是区域名称,将前缀设置为null,因此它不会显示在URL中作为Customer / Customer / Create,Route是Controller Action Name,在这种情况下,结果将是Customer / Create