当路由中存在文化时,从管理区域到非区域的 asp.net core 链接不起作用

问题描述 投票:0回答:1

我有asp.net core应用程序,它有管理、身份和公共(非区域)
我还在路线中实现了文化作为第一个参数

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
      name: "areas",
      pattern: "{culture:length(2)}/{area:exists}/{controller=Home}/{action=Index}/{id?}"
    );
});

app.MapControllerRoute(
    name: "default",
    pattern: "{culture:length(2)}/{controller=Home}/{action=Index}/{id?}");

areas/admin/views/Home/index.cshtml
我有以下链接注意asp区域属性

<a asp-controller="Home" asp-action="About">About</a>
<a asp-controller="Home" asp-action="Privacy" asp-area="" >Public</a>
@Html.RouteLink("Public via RouterLink", "Default",new { action = "Index", controller = "Home" }) 
@Html.ActionLink("Public via ActionLink", "Index", "Home", new { area = "" }, null)

上面的链接呈现如下

<a href="/en/Admin/Home/About">About</a>
<a href="">Public</a>
<a href="">Public via RouterLink</a> 
<a href="">Public via ActionLink</a>

在我指定的所有链接中

area = ""
html
<a>
标签均以空
href

呈现

从非区域到区域的链接工作正常
也可以从一个区域链接到另一个区域也工作正常
但仅限从区域到非区域有此问题

这是在我实现上面第一个代码块中显示的基于

culture
的路由之后发生的

asp.net-core hyperlink asp.net-mvc-routing actionlink routelink
1个回答
0
投票

我得到的解决方案是显式指定

culture
属性

@Html.ActionLink("Public via ActionLink", "Index", "Home", new { area = "", culture="en" }, null)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.