应该使用MVC在每个View中使用ViewModel吗?

我知道您使用ViewModel来存储要在View中使用的其他模型和源的不同数据,因为模型不会始终保持您想要的。

我想弄清楚是否适合为每个View使用ViewModel。 我问的原因是出于一致性原因。 您可以拥有一个只需要Model本身的View和另一个必须拥有ViewModel的View。 在所有视图之间混合这些是否很好? 或者每个View都应该有一个ViewModel?

这很重要,因为我的模型与数据库直接相关,因为我正在使用Entity Framework 4.1 Code First。

这不是一项要求,但这是一种最佳做法。

您希望尽可能地将数据库与演示文稿分离,并且拥有ViewModel (即使它是相同的)会为您提供分离。 它还保持一致性,因此你没有模型的一些视图,有些没有。 这种类型的设计使您可以考虑您希望您的观看到的所有数据,并找出优化,查看是否可能发生重复数据,将数据保持在一个位置,等等。

您可以将ViewModelView的合约….此View需要X才能工作。

前面的工作要多一些,但最终会得到回报。

就个人而言,我喜欢抽象从我的模型中发送到我的视图的内容。

原因是需求变化并且使用视图模型我可以快速包含我需要的数据而不会污染我的模型。

当您的模型由框架创建时,这会更加发挥作用。 如果您的框架相关模型发生变化,那么抽象出模型的细节可能会成为未来。

值得记住的是,您的视图与控制器和模型无关。 您可能会发现,通过使用视图模型,您可以比将视图绑定到模型本身时更轻松地跨控制器方法重新使用视图。