0

我對微軟在模板站點顯示登錄頁面的方式感到困惑。 「用戶名」,「密碼」和「記住我?」的具體措詞在模型中設置。這似乎完全倒退到我身上。我認爲MVC模式的全部重點是幫助分離問題;顯示在視圖上的文本不會像這樣綁定到模型上。我認爲你只想在視圖中以純文本的方式擁有「用戶名」,這樣就可以將其更改爲「用戶ID」或輕鬆地轉換爲其他語言,而無需更改模型。MVC3的模板網站;這是顯示模型的正確方法嗎?

當創建一個類似於登錄頁面的新頁面時,我應該按照他們的模板進行操作嗎?在模型本身中定義顯示文本有沒有優勢?

回答

3

其實你應該傳遞給視圖的不是模型。這是一個視圖模型。視圖模型是專門爲滿足給定視圖的要求而定製的類。因此,在這個視圖模型中,您可以使用[Display]屬性修飾您的屬性來更改相應標籤的文本,或者在使用Html.LabelFor幫助器作爲第二個參數時將其簡單地設置在視圖中。

+0

有趣的...有沒有在AccountModels.cs中的類被定義爲「視圖模型」的地方?我之前並不知道這個概念。我不明白爲什麼這會比在視圖中定義模型的文本更好。 – GendoIkari

+0

@GendoIkari它更可取,因爲如果您在視圖中的多個位置上都有該標籤,則在ViewModel中比在視圖中的每個位置更容易。這種模式是MVVM模式。 – AJC

+0

謝謝......現在我已經聽說了「視圖模型」這個詞,我在網上找到了更多有用的信息。我從1.0開始就沒有使用過MVC,所以這對我來說都是新的。 – GendoIkari

0

您可以用「System.ComponentModel.DataAnnotations」命名空間中的attibute裝飾viewmodel屬性,並用於更多視圖和控制器操作中的顯示標籤和驗證模型。爲此,您可以使用model而不是viewmodel。

相關問題