2012-04-13 5 views
0

Hallo, ich versuche, die great article zu nutzen, um die Lokalisierung in meiner mvc3-Site verfügbar zu machen. Ohne Bereichen funktioniert perfekt, aber Bereiche in meiner Website Einführung Ich habe für dieses Problem kommen:htmlHelper.RouteLink erzeugt nicht die gewünschte URL

htmlHelper.RouteLink(linkText, globalisedRouteData) 

wo globalisedRouteData:

4 Keys: Culture, Area, Controller, Action 
4 values: en, soluciones, home, index 

wird die erwarteten nicht zu erzeugen (für mich): host/en/soluciones/home/Index aber:/soluciones/Home? culture = de

Was bricht mich ist das? culture = en. Warum wird das/en /, wie es in globisedRouteData enthalten ist, nicht eingebettet?

In meinem RegisterRoutes stellte ich:

 const string defautlRouteUrl = "{area}/{controller}/{action}/{id}"; 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     RouteValueDictionary defaultRouteValueDictionary = new RouteValueDictionary(new {area="soluciones_de_salud", controller = "Home", action = "Index", id = UrlParameter.Optional }); 
     routes.Add("DefaultGlobalised", new GlobalisedRoute(defautlRouteUrl, defaultRouteValueDictionary)); 

Thanks¡¡

Antwort

0

Ich glaube, Sie brauchen die Verwendung von 'id' in 'Kultur'

dh

const string defautlRouteUrl = "{area}/{controller}/{action}/{culture}"; 

RouteValueDictionary defaultRouteValueDictionary = new RouteValueDictionary(new {area="soluciones_de_salud", controller = "Home", action = "Index", culture = UrlParameter.Optional }) 
ändern

Wenn die Routenbindung auftritt, muss der Parametername mit dem Routenparameter übereinstimmen, andernfalls enden Sie mit wi th

?ParamName=Value  (?culture=en) 
0

Versuchen Sie, die id in culture

Wenn die Kultur in Ihrer URL zwingend verändern sich auch

const string defautlRouteUrl = "{area}/{controller}/{action}/{culture}"; 
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
RouteValueDictionary defaultRouteValueDictionary = new RouteValueDictionary(new {area="soluciones_de_salud", controller = "Home", action = "Index" }); 
routes.Add("DefaultGlobalised", new GlobalisedRoute(defautlRouteUrl, defaultRouteValueDictionary)); 

id = UrlParameter.Optional entfernen Wenn die Kultur nicht zwingend vorgeschrieben ist und Sie würden einen Standardwert

gesetzt
const string defautlRouteUrl = "{area}/{controller}/{action}/{culture}"; 
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
RouteValueDictionary defaultRouteValueDictionary = new RouteValueDictionary(new {area="soluciones_de_salud", controller = "Home", action = "Index", culture = "en" }); 
routes.Add("DefaultGlobalised", new GlobalisedRoute(defautlRouteUrl, defaultRouteValueDictionary)); 
Verwandte Themen