我有一種感覺,這是非常明顯的,我錯過了,但在這裏。ASP.Net全球化MVC控制器
我想在ASP.Net MVC項目(C#,MVC2,.Net4.0)中設置多種語言。但是,我有一些情況下我想要在控制器中翻譯短語(主要是錯誤/成功消息)。但是,似乎我嘗試的每種方法都是protected
或internal
。如何從我的控制器訪問resx
文件?
我有一種感覺,這是非常明顯的,我錯過了,但在這裏。ASP.Net全球化MVC控制器
我想在ASP.Net MVC項目(C#,MVC2,.Net4.0)中設置多種語言。但是,我有一些情況下我想要在控制器中翻譯短語(主要是錯誤/成功消息)。但是,似乎我嘗試的每種方法都是protected
或internal
。如何從我的控制器訪問resx
文件?
這是一個演示文稿的具體問題,我認爲最好的方法是在視圖級別處理此問題。如果您從視圖訪問資源,則問題會更少。還要注意,從控制器訪問資源使得它們不易測試,因爲當訪問資源時(默認情況下),資源管理器會查找在測試時找不到的特定文件。
確保爲您創建的resx類的修飾符是Public
。當你編輯resx文件時,你會看到一個下拉菜單,修飾符朝右上方(靠近屏幕的垂直中間)。
但是,考慮一下這樣一個事實,即您可以通過使用DataAnnotations和資源文件修飾不同的屬性,讓ViewModel負責本地化驗證消息。
我看了一下DataAnnotations,並沒有太過分。看起來你需要使用Linq-To-SQL?我使用NHibernate。我正在關注這個(http://msdn.microsoft.com/en-us/library/cc488527.aspx)教程,但是我的部分類無法在不同的項目中找到我的NHibernate類。 – 2010-08-20 17:54:20
我同意。您可以在特定於視圖的資源中爲用戶包含幾個不同的可能消息,並讓控制器傳遞一個密鑰或其他類型的指示符,以允許視圖決定需要顯示哪些消息。我不認爲控制者應該做的不止於此,因爲用戶如何被告知這種情況是對這一觀點的決定。 – 2010-08-20 19:50:34