希望這不是一個問題太愚蠢。在MVC中,視圖中似乎有很多本地化支持。但是,一旦我到達控制器,就會變得模糊不清。如何在使用基於SQL的本地化提供程序時本地化/國際化MVC控制器?
- 使用元:獲取ResourceKey = 「嗒嗒」出來了,同樣用 <%$資源:PageTitle.Text%>。
- ASP.NET MVC - Localization Helpers - 對於Html幫助程序類的建議擴展,如
Resource(this Controller controller, string expression, params object[] args)
。同樣,Localize your MVC with ease建議有一個稍微不同的擴展名,如Localize(this System.Web.UI.UserControl control, string resourceKey, params object[] args)
這些方法在控制器中都不起作用。我把下面的函數放在一起,我使用控制器完整的類名作爲我的VirtualPath。但我是MVC的新手,並假設有更好的方法。
public static string Localize (System.Type theType, string resourceKey, params object[] args) {
string resource = (HttpContext.GetLocalResourceObject(theType.FullName, resourceKey) ?? string.Empty).ToString();
return mergeTokens(resource, args);
}
想法?註釋?
我認爲,本土化是一個方面,不應該使控制器的組成部分邏輯。由於這是一個演示特定的方面,我認爲無論您選擇什麼方法,都應該讓您的視圖負責解決此問題。我知道這並不能回答你的問題,但至少是你作出決定的暗示。 – uvita 2010-03-17 00:22:40
@uvita請參閱我對@LukLed的回覆。我還想補充說,使本地化成爲視圖的一個問題是一個合理的架構決定,儘管這種類型的策略迫使我收集我的控制器或驗證服務層中的密鑰/令牌列表,以便它們可以在我的視圖中傳遞通過ViewData。另外,就我所見,這意味着我的視圖必須填充ModelState錯誤或放棄Html.ValidationMessage()基礎結構。這不會比服務層中的本地化對視圖的責任更具破壞性嗎? – EBarr 2010-03-17 13:13:07