定位标记帮助程序自动添加区域以在区域视图中链接

时间:2019-12-27 12:24:07

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

  <a asp-action="Logout" asp-controller="Account" > logout</a>

主页上没有问题,链接看起来像/ account / logout 但在“用户区页面”链接中,外观类似于/ user / account / logout 和错误未找到

这是我的地图路线

  endpoints.MapControllerRoute(
               name: "areas",
               pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
            endpoints.MapControllerRoute("defualt", "{controller=Home}/{action=Index}/{id?}");

1 个答案:

答案 0 :(得分:0)

似乎是设计使然,在区域视图中没有asp-area的链接会将区域名称添加到url。Area Name用于指示在哪里找到Controller。例如,如果您遵循Areas in ASP.NET Core,则在不同的HomeController中它将有多个不同的Area。没有区域名称,它将无法使用Home/Index重定向到特定的Controller。

如果要从Area重定向到根控制器,可以在Area页面中使用以下内容:

<a href="@Url.Action("Logout","Account", new { area="" })">logout</a>

或者您应该在“用户”区域下添加相应的视图和控制器,如下所示: enter image description here