我是ASP.NET Core的新手,正在.NET Core MVC中构建项目。
在我的管理区域,我有一个控制器UserRolesController和Action CreateRole(工作正常(
在视图中,我添加了一个到CreateRole Action 的超链接
<a class="btn btn-primary" asp-controller="UserRoles" asp-action="CreateRole">Create Role</a>
但运行后,链接显示为https://localhost:44332/UserRoles/CreateRole instead of https://localhost:44332/Admin/UserRoles/CreateRole
再次将区域链接到我的主页返回https://localhost:44332/UserRoles?area=Admin
而不是https://localhost:44332/Admin/UserRoles
这就是我的路线配置的方式
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapAreaControllerRoute(
"admin",
"Admin",
"Admin/{controller=Home}/{action=Index}/{id?}");
endpoints.MapAreaControllerRoute(
"client",
"Client",
"Client/{controller=Home}/{action=Index}/{id?}");
endpoints.MapAreaControllerRoute(
"investor",
"investor",
"Investor/{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
我做错了什么。感谢
我认为您需要添加asp-area
标记助手:
<a class="btn btn-primary" asp-area="Products" asp-controller="Admin" asp-action="CreateRole">Create Role</a>
或
@Html.ActionLink("Admin/UserRoles/CreateRole", "CreateRole", "UserRoles",new { area = "Admin" })
点击此处了解更多信息
我找到了一个解决方案。您应该修改订单,使区域路线优先:
endpoints.MapAreaControllerRoute(
"area",
"Admin",
"{area:exists}/{controller=Home}/{action=Index}/{id?}"
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
它对我有效