ViewModel无处不在!

时间:2010-01-18 16:31:31

标签: asp.net-mvc

我希望看到SO社区对此做出回应。我知道ViewModel基本上用于将视图与数据绑定。当表单提交时,返回的对象(modelbinded)应该是ViewModel还是实体?我知道ViewModel是一个实体,但我在理论上在这里谈论。我想确保我和我的团队理解这些概念。

3 个答案:

答案 0 :(得分:3)

我更喜欢将ViewModel提供给视图,并让ModelBinder绑定到我的某个业务实体。

我的ViewModel通常包含一些基于显示的数据(例如是否显示小部件A),因此它们实际上不需要被绑定。

善,

答案 1 :(得分:0)

我使用ViewModel将数据传递到页面并获取数据。我的所有表单首先进入ViewModel,我将运行我需要的任何验证,然后我将其转换为适当的DTO / Entity。

答案 2 :(得分:0)

只要你不为懒惰设计做出妥协,就可以做到这两点。例如。绑定到复杂实体并不容易 - 例如,如果实体没有无参数构造函数 - 如果你避免这样的实体只是为了使绑定变得容易......那就太糟糕了。这就像将所有变量设置为“字符串”一样,因为您的UI控件无法理解日期或浮点数。它也可能导致愚蠢的DTO样内陷和贫血领域模型。 但是,如果您不需要智能实体 - 可以在模型绑定中使用它们。

与往常一样,做出决定需要经验和品味。没有简单的规则。避免UI对域设计的影响的一种方法是首先开发域级别(TDD在这里是一个很好的帮助)。另一种方法是为您的域层提供多个“客户端” - 不同的要求将使您将核心功能提取到域层,将特定的事物(如表示属性和格式)移动到适当的层/视图模型。