2017-01-09 1 views
0

Je travaille sur un site web avec 2 langues Cela fonctionne pour moi mais le problème vient quand je change la langue de la vue actuelle qui a un paramètre, le langage de la la vue actuelle a changé et la vue actuelle s'est rechargée mais sans les paramètres, c'est une valeur nulle
comment conserver les paramètres tout en changeant la langue? Je cherchai beaucoup de temps, mais je ne trouve rien pu me aiderChanger l'URL de langue avec l'attribut id asp.net mvc 5

c'est ce que je l'ai fait

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

en html

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

avez-vous jeton culture et une aide? si oui, mettez la culture avant la déroute new {culture = CultureHelper.GetDefaultCulture(), controller ... –

+0

non je n'avais pas de jeton de culture –

+0

Votre problème est susceptible que vous ayez rendu votre paramètre de langue optionnel 'language =" en " '. Pour une langue par défaut/scénario de langue spécifiée, il devrait y avoir une deuxième route (si c'est ce que vous essayez de faire). Si vous passez un contrôleur comme premier paramètre maintenant, il finira dans la valeur de route de langue. Voir [cette réponse] (http://stackoverflow.com/a/32839796/181087). – NightOwl888

Répondre

0

pour changer la langue avec l'attribut "id" dans le changement d'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)