2010-06-17 57 views
0

我試圖在視圖中爲每種語言設置特定的文件夾。 (我知道這不是做這件事的最好方式,但現在必須這樣)
例如 /Views/EN/User/Edit.aspx /Views/US/User/Edit.aspx在視圖中使用單獨的語言文件夾進行本地化

這些將都使用相同的控制器和模型,但對每種語言不同的看法。

在我Global.asax.cs我:

routes.MapRoute(
    "Default", // Route name 
    "{language}/{controller}/{action}/{id}", // URL with parameters 
    new { language = "en", controller = "Logon", action = "Index", id = UrlParameter.Optional }, // Parameter defaults 
    new { language = @"en|us" } // validation 
); 

這工作不錯,但總是指向相同的觀點。
如果我把這個路徑,它的工作原理Lanagugage文件夾:

return View("~/Views/EN/User/Edit.aspx"); 

但顯然,這不是一個很好的辦法做到這一點。
有沒有辦法讓MVC在正確的語言文件夾中查找?

我知道這不是做本地化的最佳方式,但我不能使用資源文件。

回答

0

更改視圖引擎使用routeparameter

Change lookup rule for views

編輯

由於掃描的視圖路徑列表是靜態的,沒有機會選擇取決於某些控制器上的不同看法通過按照上面的鏈接更改列表來實例化實例。 這看起來更promissing起點:

http://www.dotnetguy.co.uk/post/2010/01/31/ASPNET-MVC-e28093-Dynamically-Changing-The-Master-Page-%28Theming%29.aspx

它覆蓋CreateView的到chnage渲染視圖。該示例更改主頁面,但希望它也適用於視圖。

+0

這看起來不錯,但我如何從路由表/ URL獲取{language}? – Adrian 2010-06-18 09:57:04

+0

看我的編輯。我沒有嘗試解決方案,但它看起來不錯。 – 2010-06-18 17:04:08

+0

需要更改ViewPath並離開主設備,但工作得很好。 感謝您的幫助。 – Adrian 2010-06-21 15:27:10

相關問題