MVC关于数据模型和视图模型的疑问?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

过去我已经阅读过一些关于模型的MVC建议,声明不应该为域和视图重用相同的模型对象; 但我一直无法找到任何人愿意讨论为什么这是不好的。

我认为创建两个独立的模型 - 一个用于域,一个用于视图 - 然后映射它们会产生大量的重复,再加上繁琐的映射代码(其中一些可能会被诸如AutoMapper之类的缓解)容易出错。

是什么让这两个点有一个单独的模型值得重复和映射代码的麻烦?

提问于
用户回答回答于

其核心,两个模式是关于分离关注。我希望View能够使用单个模型。希望领域模型能够代表我与领域专家一起构建的概念模型。ViewModel通常有技术限制。领域模型是关于POCO的,并且不受任何显示的数据(视图)或持久的(以数据库或其他方式)的技术限制。

假设我在屏幕上显示了三个实体。这是否意味着我需要强制三者之间的关系?或者只是创建一个包含所有三个项目的ViewModel组件对象。使用独立的ViewModel,查看问题与我的域分离。

用户回答回答于

为什么?因为视图不应该具有使用模型对象的能力!

想象一下,将项目传递给网页设计人员来完成视图图层。突然间他/她有能力通过模型层来处理应用程序的数据。这不好。

所以总是只传递视图需要的数据,而不是带有方法的对象。

扫码关注云+社区