2017-01-09 9 views
0

私は2つの言語のウェブサイトで作業しています それは私のために働いていますが、現在のビューの言語を変更すると問題が発生します。現在のビューが変更され、現在のビューが再ロードされますが、パラメータはありません。ヌル値です
言語の変更中にパラメータを保持する方法はありますか? 私id属性の言語を変更するasp.net mvc 5

を助けることができる、これは私がRouteConfig.cs HTML

@Html.ActionLink(
       "Arabic", 
       ViewContext.RouteData.Values["action"].ToString(), 
       ViewContext.RouteData.Values["controller"].ToString(), 
       new { language = "ar" }, 
       null) 
+0

は、あなたがトークンの文化といくつかのヘルパーを持っていますか?もし文化が文化の中に入っていたらnew {culture = CultureHelper.GetDefaultCulture()、controller ... –

+0

私はカルチャートークンを持っていません –

+0

あなたの言語パラメータを 'language =" en " '。デフォルトの言語/指定された言語のシナリオの場合は、2番目のルートがあるはずです(これが実行しようとしている場合)。コントローラを最初のパラメータとして渡すと、言語ルート値になります。 [この回答](http://stackoverflow.com/a/32839796/181087)を参照してください。 – NightOwl888

答えて

0

public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");  
      routes.MapRoute(
       name: "Default", 
       url: "{language}/{controller}/{action}/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, language = "en" } 
      );  
     } 

をやったことで、私は多くの時間を検索するが、私は何も見つかりませんでしたURL変更の「id」属性を使用して言語を変更する:

@Html.ActionLink("Arabic",ViewContext.RouteData.Values["action"].ToString(), ViewContext.RouteData.Values["controller"].ToString(), new { language = "ar" }, null) 

に:

@Html.ActionLink("Arabic",ViewContext.RouteData.Values["action"].ToString(), ViewContext.RouteData.Values["controller"].ToString(), new { language = "ar", id = ViewContext.RouteData.Values["id"]?.ToString() }, null) 
関連する問題