0

こんにちは、素晴らしい記事を利用して、私の mvc3 サイトでローカライズを利用できるようにしようとしています。エリアなしで完全に機能していますが、サイトにエリアを導入すると、この問題が発生しました:

htmlHelper.RouteLink(linkText, globalisedRouteData)

globalizedRouteData:

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

(私にとって)期待されるものを生成していません:host/en/soluciones/home/Indexしかし:/soluciones/Home?culture=en

私を壊しているのは、この ?culture=en です。globalizedRouteData に含まれている /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));

ありがとう

4

2 に答える 2

0

を変更してみてidくださいculture

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));
于 2012-04-13T12:27:04.183 に答える
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 })

ルート バインディングが発生するとき、パラメーター名はルート パラメーターと一致する必要があります。

?ParamName=Value      (?culture=en)
于 2012-04-13T12:25:36.540 に答える