4

我知道您使用ViewModel存儲來自其他模型和視圖中使用的源的不同數據,因爲模型不會始終保存您想要的內容。應該在每個使用MVC的View中使用ViewModels嗎?

我想弄清楚它是否正確使用視圖模型爲每一個視圖。我問的原因是出於一致性的原因。你可以有一個只需要模型本身的View和另一個必須有ViewModel的View。將所有視圖之間混合起來好不好?或者應該每個視圖都有一個ViewModel?

這是很重要的,要知道,因爲我使用實體框架4.1代碼第一次,因爲我的模型是直接相關的數據庫。

回答

13

這不是一個要求,但它是一個最佳實踐。

你想從你的演示文稿儘可能分離數據庫並具有ViewModel(即使是相同的)爲您提供了政企分開。它也保持了事物的一致性,所以你對模型沒有一些看法,有些沒有。這種類型的設計使您可以考慮所有希望視圖粘附並優化的數據,查看是否可能發生數據重複,將數據保存到一個位置等。

想想你的ViewModel想與View合同....這View要求X的工作。

稍微多一些工作,但最終會得到回報。

+0

+1最佳做法+從數據庫中解耦是很好的一點。 –

+0

好吧,我只是想確定,因爲我是新來的如何設計這些東西。從我發現的以及ViewModels可以幫助'不'違反德米特法。 – TIHan

7

個人而言,我喜歡抽象的東西會從我的模型送到我的看法了。

的原因是需求的變化,並與視圖模型就可以快速地包括數據,我需要的片段,而不會污染我的模型。

當你的模型是由框架創建的時候,這會發揮更大的作用。如果您的框架相關模型發生變化,那麼抽象出模型的細節可能會成爲未來。

這也是值得記住的是,你的觀點是獨立的控制器和模型。您可能會發現,通過利用視圖模型,您可以比視圖綁定到模型本身時更容易地跨控制器方法重用您的視圖。

+1

+1你也可以說不必污染你的數據庫模型。 – Kelsey

相關問題