2017-01-09 10 views
0

Я работаю на веб-сайте с 2-мя языками Он работает для меня, но проблема возникает, когда я меняю язык текущего вида, который имеет параметры, язык текущий вид изменен и текущий просмотр перезагружен, но без параметров, это нулевое значение
как сохранить параметры при изменении языка? Я искал много времени, но я не нашел что-нибудь может помочь мнеИзменить язык url ​​с атрибутом id asp.net mvc 5

это то, что я сделал

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

в HTML

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

у вас есть культура токенов и некоторые помощники? если так поставить культуру перед маршрутом new {culture = CultureHelper.GetDefaultCulture(), контроллер ... –

+0

нет у меня не было маркера культуры –

+0

Ваша проблема скорее всего в том, что вы сделали свой языковой параметр необязательным 'language =" en " '. Для сценария языка/заданного языка по умолчанию должен быть второй маршрут (если это то, что вы пытаетесь сделать). Если вы передадите контроллер в качестве первого параметра сейчас, он окажется в значении маршрута языка. См. [Этот ответ] (http://stackoverflow.com/a/32839796/181087). – NightOwl888

ответ

0

для изменения языка с атрибутом «id» при изменении URL:

@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) 

 Смежные вопросы

  • Нет связанных вопросов^_^