12

我在Nuget上使用最新版本的AttributeRouting軟件包爲我的ASP.Net MVC項目設置路由。我正在創建一個有兩種語言的網站,英文(小學)和西班牙文(中學)。這兩種語言的網址是不同的。例如,關於我們的英文版會是這樣的:www.root.com/en/about-us,而西班牙語版本可能是這樣的:www.root.com/es/sobre-nosotros。屬性路由和本地化問題

我有如下一個路由前綴設置: [RoutePrefix(「EN」,TranslationKey =「主頁」)]

然後,我有我創建的從XML文件到FluentTranslationProvider讀取值的程序。對於註冊我的路由代碼如下所示:

var translations = new FluentTranslationProvider(); 
     translations 
      .AddTranslations() 
      .FromFile(); 

routes.MapAttributeRoutes(
      config => 
       { 
        config.AddRoutesFromControllersOfType<BaseController>(); 
        config.AddTranslationProvider(translations); 
        config.CurrentUICultureResolver = 
         (httpContext, routeData) => 
         (string) routeData.DataTokens["cultureName"] ?? 
         Thread.CurrentThread.CurrentUICulture.Name; 
       }); 

而且這似乎是工作,因爲我可以訪問我的Routes.axd頁面,看到以下內容:http://imm.io/nm7Z

後來在我的網頁,我的代碼顯示我的CurrentCulture設置爲es-AR,但是當我調用URLHelper類來構建url時,它只會生成默認的英文版本,並且不會給我西班牙語版本。任何人都可以告訴我爲什麼會出現這種情況?我不能爲我的數字生活這一點。

+0

請添加你的代碼調用urlhelper – 2013-12-03 05:47:13

+2

此外,圖像鏈接到您的文章不存在 – Henrik 2013-12-08 12:15:06

回答

1

您是否嘗試過更新RouteValueDictionary並將其作爲參數傳遞給您的url助手?我爲切換ssl做了類似的事情。

下面是一些示例代碼來考慮,作爲一個輔助功能:

@functions { 

    public static string LanguageUrl(WebViewPage page, string actionName, string controllerName, string desiredCulture) 
    { 
    // translate action name here, if needed. 
    return page.Url.Action(actionName, controllerName, new { cultureName = desireCulture }); 
    } 
}