我有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
的路由之后发生的
我得到的解决方案是显式指定
culture
属性
@Html.ActionLink("Public via ActionLink", "Index", "Home", new { area = "", culture="en" }, null)