2012-04-13 19 views
0

こんにちは、great articleを利用して、mvc3サイトでローカリゼーションを利用できるようにしています。エリアずに完璧に働いたが、私はこの問題になってきた私のサイト内の領域に導入されていますhtmlHelper.RouteLinkがURLを生成しません。

globalisedRouteData
htmlHelper.RouteLink(linkText, globalisedRouteData) 

:ホスト/ EN/soluciones:

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

は(私のために)期待を生成していないが/ home/Index しかし:/ soluciones/Home?culture = en

これは何ですか?culture = en。 globalisedRouteDataに含まれているように/ en /が埋め込まれていないのはなぜですか?私RegisterRoutesで

は、私が置か:

 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¡¡

答えて

0

を私はあなたが '文化' への 'ID' の使用を変更する必要があると考えてい

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

RouteValueDictionary defaultRouteValueDictionary = new RouteValueDictionary(new {area="soluciones_de_salud", controller = "Home", action = "Index", culture = UrlParameter.Optional }) 
すなわち

ルートバインディングが発生すると、パラメータ名がルートパラメータと一致する必要があります。そうでない場合は、wi

?ParamName=Value  (?culture=en) 
0

番目の文化があなたのURLで必須である場合には文化が必須ではありません、あなたはデフォルト値

を設定したい場合も id = UrlParameter.Optional

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

を削除idculture

を変更してみてください

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)); 
関連する問題