2016-05-09 7 views
1

私はリンクで文化が定義されているASP.NET 5ウェブサイトを持っています。たとえば:リンクに基づいたサイトの文化を変更してください

http://localhost:8080/nl/customers

http://localhost:8080/fr/customers

http://localhost:8080/en/customers

私は、言語を変更するにはボタンを実装する必要があります。 URLを解析して言語プレフィックスを自分で追加しなくても、これを行う方法はありますか?

答えて

1

パラメータを使用すると、現在のroutedataとキーとの匿名のオブジェクトを渡すと、変更したい値としてあなたはヘルパーメソッド

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); 
    } 
} 

を作成することができます。

@foreach (var lang in Model.LanguageList) 
{ 
    <li> 
     <a href="@Url.RouteToCurrent(ViewContext.RouteData, new {locale = lang})">@lang</a> 
    </li> 
} 
関連する問題