具有 ASP.NET 核心的锚标记助手中的自定义路由

Custom routing in anchor tag helper with ASP.NET Core

在我的控制器中,我使用的是路由:

[Route("/{culture}/contact")]
//action signature

所以我需要使用一个culture参数。直接在浏览器中输入url:https://localhost:44361/en/contact也是一样显示url,没问题。

cshtml 中,我使用的锚点如下:

<a class="mainButton" rel="canonical" asp-controller="Home" asp-action="Contact" asp-route-culture ="@ViewBag.Culture">contact</a>

并且锚点在浏览器中为我生成了一个 url:https://localhost:44361/contact?culture=en

如何让我的主播产生这个? https://localhost:44361/en/contact

一种方法是继承 RequestCultureProvider class。

还有另一种方法可以使用内置的 RouteDataRequestCultureProvider class 获得相同的结果(它已在 ASP.NET Core 1.1 中引入)。

可以参考这篇文章

ASP.NET Core Culture Route Parameter

一天结束时,我使用的方法是从控制器发送带有文化代码的 ViewBag,并在视图中构建 url,如下所示:

<div><a class="mainButton" rel="canonical" hreflang="@ViewBag.Culture" href="/@ViewBag.Culture/services">@Localizer["services"]</a></div>