2017-01-09 64 views
0

我正在使用2種語言的網站 它對我有用,但問題出現在我更改當前視圖的語言時,它有一個參數,語言當前視圖已更改,當前視圖已重新載入,但沒有參數,則爲空值
如何在更改語言時保留參數? 我搜索了很多時間,但我沒有發現任何東西可以幫助我更改帶有id屬性的語言網址asp.net mvc 5

這是我在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」 '。對於默認的語言/指定的語言場景,應該有第二條路線(如果這是您要做的)。如果您現在將控制器作爲第一個參數傳遞,它將以語言路由值結束。看[這個答案](http://stackoverflow.com/a/32839796/181087)。 – NightOwl888

回答

0

在RouteConfig.cs

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)