2012-04-13 55 views
0

嗨我想利用great article在我的mvc3网站上提供本地化功能。如果没有区域是可以正常使用,但将在我的网站领域我得出这样的问题:htmlHelper.RouteLink不生成我想要的网址

htmlHelper.RouteLink(linkText, globalisedRouteData) 

其中globalisedRouteData:

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

没有产生预期的(对我来说):主机/ EN/SOLUCIONES/home /索引 但是:/ soluciones/Home?culture = en

什么是打破我这是?文化= en。为什么没有被嵌入到/ en /中,因为它包含在globalisedRouteData中?

在我的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

我相信你需要改变使用 '身份证' 到 '文化'

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

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

当发生路由绑定时,参数名称必须与路由参数相匹配,否则最终会导致无线连接日

?ParamName=Value  (?culture=en) 
0

尝试改变idculture

如果文化是在你的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)); 

如果文化是不是强制性的,你会设置一个默认值

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