2012-03-15 21 views
0

我已經開始了一個MVC項目的工作,並且遇到了一些我覺得被卡住的場景。我需要將現有的MVC3網站轉換爲適用於多種語言的網站。因爲我是新手,所以在解釋MVC3時可能會使用錯誤的單詞/定義/關鍵字,所以請隨身攜帶。如何爲mvc3中的@Model屬性之一本地化

我有一個HeaderPage.cshtml並通過

@model IHeaderPage 

具有綁定到它的視圖模型,它這OUPUTS模型的屬性:

<h3>@Model.HeaderName</h3> 

我打電話從這個的MainPage觀點。 cshtml

@Html.Partial("HeaderPage") 

現在在控制器的Action方法中,我更改模型的屬性

objHeaderPage.HeaderName="Fill your Registeration details"; 

而當我運行該項目時,我看到文本「填寫您的註冊詳細信息」。

現在我該如何更改文本值,即它應該從我的resx文件中讀取。 我已經在App_LocalResources文件夾中創建了resx文件。 我聽說,它可以通過顯示屬性來完成..但我該怎麼做,或者有沒有其他更好的方法?

回答

1

This應回答有關使用DisplayAttribute的問題。

我用DisplayAttribute我的視圖模型的每一個屬性,但如果你要處理像「記錄不能因爲錯誤而被保存......」自定義消息,或類似的東西,你可以簡單地使用

objHeaderPage.HeaderName = Resources.ResourceMessageName; 

框架會自動選擇正確的文化。 我寧願將所有資源都放在單獨的項目中,以便在需要時只部署資源的dll,但您也可以考慮部署resx文件以在生產計算機上直接編輯它們。我想這取決於你喜歡/需要什麼。

+0

非常感謝,我不知道我們可以在代碼背後做到這一點。我照你說的做了。除此之外,我還有一個註冊表單,其中顯示標籤及其各自的輸入字段。我已經使用@ Html.LabelFor(mdl => mdl.Person.FullName),這會呈現英文標籤,因此現在如何從這些場景中的資源文件中獲取值? – thinkmmk 2012-03-15 14:52:22

+0

兩種方式imo。直接在Person的實體中使用DisplayAttribute,或者在viewmodel中創建一個像PersonName {get; set;}這樣的屬性。我更喜歡複雜項目的第二個。 – Iridio 2012-03-15 15:26:29