0

嗨,我正在尝试利用这篇精彩的文章在我的 mvc3 站点中提供本地化。没有区域可以完美运行,但是在我的站点中引入区域我遇到了这个问题:

htmlHelper.RouteLink(linkText, globalisedRouteData)

全球化路由数据在哪里:

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

没有产生预期的(对我来说):host/en/soluciones/home/Index 但是:/soluciones/Home?culture=en

让我心碎的是这个?culture=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));

谢谢

4

2 回答 2

0

我相信您需要将“id”的使用更改为“文化”

IE

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)
于 2012-04-13T12:25:36.540 回答
0

尝试更改id输入culture

如果您的网址中的文化是强制性的,请同时删除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));
于 2012-04-13T12:27:04.183 回答