2011-08-25 33 views
1

我正在開發一個應用程序,該應用程序使用ASP.NET MVC3作爲通過接口與服務層交談的前端。所有的接口/服務都通過ninject和構造函數注入到控制器中。如何使用MVC3中的localizationService本地化視圖

我想通過由ninject提供的位置服務來通過所有本地化。

在控制器端足夠簡單,我在控制器基類中添加了一個Localize函數,並將ILocalizeService添加到構造函數中,並且完成了。任何時候我需要本地化一個字符串,我可以調用本地化函數,然後調用這個服務。

現在我正試圖找出一個乾淨的方式來做到這一點的觀點。我有一個基本的View類,它在控制器中公開了一個Localize函數,所以我可以在視圖上傳遞任何靜態文本,但是我找不到一個乾淨的方式來獲取我的本地化服務的實例。我已經閱讀了大量的帖子,說DI進入一個觀點是不好的做法,但在這種情況下,我認爲基本觀點是在視圖中集中文本本地化的最乾淨的地方(當然,我會接受任何其他選擇不需要我通過我的內核)

任何人都可以指示我的例子或如何做到這一點乾淨的建議。

回答

2

Ninject允許將屬性注入視圖。但這是不好的做法。在視圖中,你應該儘可能少地做。

我認爲主要問題在於,您正在使用自定義本地化服務,而不是使用某種標準方式來使用每種語言的資源文件或自定義視圖。請參閱this excellent blog post by Scott Hanselman

或者是否有任何特殊原因來處理本地化問題?

+0

感謝您的意見。實際上,在那篇文章的最後我從i18n nuget包Scott引用了我的一些想法。我正在開發的應用程序有一個Web前端,以及一個通過服務層進行交談的API,並且API也需要進行本地化。從技術上講,我可以通過資源文件或每種語言查看分別對視圖進行本地化(因爲通過API無法訪問數據),但我想將所有翻譯集中在服務層的一個地方 – Peter

+0

我剛想出如何通過屬性注入將視圖注入視圖。 Ninject/MVC中是否有一種機制允許您爲視圖使用構造函數注入,還是僅僅在框架中創建視圖時不可能? – Peter

相關問題