ASP .NET核心区域中的自定义路由

时间:2017-03-22 04:30:41

标签: asp.net-mvc routes asp.net-core asp.net-core-mvc

我喜欢ASP .NET Core中的区域功能。

例如,admin部分位于〜/ Areas / Admin文件夹中,其中包含自己的Views,Controllers和Models。管理区域的示例路线是 /domain.com/admin/users/manage

假设我有另一个名为Customers的区域,它可以包含所有与客户相关的内容。客户区域仅具有与CRUD操作相关的功能。所以我需要客户区的路线如 domain.com/customer/create 。但据我所知,实现这一目标的唯一方法是将视图放在公共Views文件夹中。

有没有办法在Regions文件夹中组织客户相关的东西,并通过我上面提到的网址访问它?

1 个答案:

答案 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