我有一个ASP.NET 5网站,其中文化在链接中定义。例如:
http://localhost:8080/nl/customers
http://localhost:8080/fr/customers
http://localhost:8080/en/customers
我需要实现一个按钮来更改语言。有没有办法做到这一点,而无需解析网址并自己添加语言前缀?
答案 0 :(得分:1)
您可以创建辅助方法
public static class UrlHelperExtensions
{
public static string RouteToCurrent(this UrlHelper urlHelper, RouteData routeData, object routeValues)
{
// Create an IDictionary<string, object>
var requestRouteData = new RouteValueDictionary(routeData.Values);
var replaceValues = new RouteValueDictionary(routeValues);
foreach (var value in replaceValues)
{
if (requestRouteData.ContainsKey(value.Key))
{
requestRouteData[value.Key] = value.Value;
}
else
{
requestRouteData.Add(value.Key, value.Value);
}
}
return urlHelper.RouteUrl(requestRouteData);
}
}
作为参数,您可以传递当前routedata和一个包含您想要更改的键和值的匿名对象。
@foreach (var lang in Model.LanguageList)
{
<li>
<a href="@Url.RouteToCurrent(ViewContext.RouteData, new {locale = lang})">@lang</a>
</li>
}