ASP.NET Core MVC ActionLink



我是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?}");

它对我有效

最新更新