当前,我使用ASP.NET Core 2.2 MVC构建应用程序,并具有常规的模板路由:
routes.MapRoute(
name: "default",
template: "{culture:required}/{area:slugify:exists}/{controller:slugify}/{action:slugify}",
defaults: new
{
area = "Home",
controller = "Home",
action = "Index"
});
在/Areas/Home/Views/Home/Index.cshtml
中,我尝试编写以下内容,并期望会生成类似“ http://localhost/en-US/Home/Home/AboutUs”的内容,但它不起作用:
<a
asp-area="Home"
asp-controller="Home"
asp-action="AboutUs">
About Us
</a>
相反,明确指定区域性有效:
<a asp-area="Home"
asp-controller="Home"
asp-action="AboutUs"
asp-route-culture="en-US">
About Us
</a>
但是,由于我的网站包含大量链接,所以我不想用CultureInfo.CurrentCulture.Name
污染所有标签。如果没有asp-route-culture
明确指定,是否有一种聪明的方法可以强制它继承当前路由值?
谢谢。
答案 0 :(得分:0)
routes.MapRoute(
name: "us_english_products",
template: "en-US/Products/{id?}",
defaults: new { controller = "Products", action = "Details" },
dataTokens: new { locale = "en-US" });
我认为您正在寻找这个。它位于
下的文档中因此,您不必在每个链接上都对路径进行硬编码,但是您可以设置路径以将其考虑在内。似乎您可以随意命名locale
,因此,如果可以命名culture
,就可以。