一直在一邊的寵物項目工作,以更好地學習asp.net mvc。我的問題是關於mvc中的viewmodels。我明白控制器應該處理視圖和模型之間的交互。我覺得我一直不得不創建viewmodel類來將來自模型的信息傳遞給視圖。是不是很好的做法,在asp.net中使用大量的viewmodels mvc
這是不好的做法?我是否應該在別處做更多的邏輯並減少視圖模型?
目前我幾乎有一個視圖模型幾乎每一個我的主要觀點。但我絕對不希望視圖直接訪問模型。
一直在一邊的寵物項目工作,以更好地學習asp.net mvc。我的問題是關於mvc中的viewmodels。我明白控制器應該處理視圖和模型之間的交互。我覺得我一直不得不創建viewmodel類來將來自模型的信息傳遞給視圖。是不是很好的做法,在asp.net中使用大量的viewmodels mvc
這是不好的做法?我是否應該在別處做更多的邏輯並減少視圖模型?
目前我幾乎有一個視圖模型幾乎每一個我的主要觀點。但我絕對不希望視圖直接訪問模型。
不,所有的視圖應該是強類型的,所以對每個視圖使用一個視圖模型是最佳實踐。 Here是關於viewmodels的非常好的文章。
您使用的越多viewmodels越好。視圖模型允許您創建一個可以包含模型中不同類型數據的單個對象。這些在創建模板時非常有用。而且,這在使用JQuery和Ajax時非常有用,因爲它是將數據傳遞到控制器然後直接傳遞到DOM的一種好方法。在我看來,使用盡可能多的視圖模型,你想要的。
您可能會考慮的另一件事是嘗試更好地設計您的模型。我個人試圖建立我的模型就像一個SQL數據庫,並遵循規範化形式。除了已有的模型之外,您不必爲每個視圖創建新的視圖模型。如果您需要將信息傳遞給不屬於您使用的模型的視圖,請使用ViewData或ViewBag。這些作爲一個對象傳遞,所以你必須將它們投射到適當的類。
沒什麼不好。您的視圖模型越接近視圖越好。
模型無法專門匹配View,所以您使用ViewModel類。
在這裏有很好的答案,這裏是我的觀點,爲什麼很多視圖模型不是問題。 您的ViewModels是將純粹的數據訪問對象甚至是您的域對象與您的表示層分離開來的好方法,併爲您的視圖提供這些對象的虛擬版本以供使用。
你的意見應該是愚蠢的,對我個人而言,我試圖實現的是將我的領域模型按摩到ViewModel中以供我的視圖使用。
使用大量的viewmodels會在您的項目中產生混亂。在控制器中創建一個Tuple
然後通過它會好得多。
重要的答案。那篇文章很好地總結了它。這基本上是我目前正在做的。謝謝。 – Deekane