在ASP.NET Core中允许路由中的可选id

时间:2017-04-13 13:03:56

标签: c# asp.net-core-mvc .net-core asp.net-core-routing

我的路线设置为

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "areaRoute",
        template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});

我想要做的是让网址像

/Company/{cfccc978-bfec-4425-a7ff-77ca7509a807}/Equipment/Index
/Company/{cfccc978-bfec-4425-a7ff-77ca7509a807}/Equipment/Edit/{f3628bf8-0e1d-4ae8-bf78-36feff9dfca5}
OR
/Company/Equipment/Index
/Company/Equipment/Edit/{f3628bf8-0e1d-4ae8-bf78-36feff9dfca5}

如果省略CompanyId,则将使用登录用户的值。

如果CompanyId存在,那么我需要确保用户可以访问它,要么他们必须在其用户上拥有该CompanyId,要么是管理员角色。

我不得不承认我无从何处开始。

我想我需要修改areaRoute映射以包含CompanyID,但是我的控制器方法应该如何使用它?我想避免必须编写每个操作方法来从用户那里拉出companyid以使其尽可能无缝。

这是一个新的应用程序,因此无需担心破坏现有功能。

0 个答案:

没有答案