ViewModel有自己的逻辑吗?

时间:2010-01-29 02:41:56

标签: asp.net-mvc viewmodel

在分配ViewModel字段时,域对象是应该直接传递给ViewModel对象,然后决定如何呈现数据,还是像服务这样的其他类应该将数据从Model分配给ViewModel?

也:

编辑:将视图模型划分为接收器和演示者是否有任何意义? (而不是仅在更新时绑定某些字段?)

3 个答案:

答案 0 :(得分:6)

通常,Controller Action接受业务对象并放置viewmodel所需的任何内容。

如果您的业务对象包含字段Name,Address,Id和View应仅显示Name,则ViewModel只有一个字段“Name”,控制器操作会填充它。 ViewModel应该对您的业务类一无所知,它应该只知道它需要显示的内容。

主要/唯一的逻辑是“显示逻辑”,就像“如果TotalAmount是负数,用CSS Class negativeNumber显示它”。

答案 1 :(得分:4)

为了SoC,如果该逻辑与View相关,那么它们可以安全地存在于ViewModel中,甚至可以安装在View本身中,但如果它们与Business或Program相关,则分别将它们放在Model和Controller上。

答案 2 :(得分:3)

根据我的经验,我使用服务将Model映射到ViewModel。我没有在我的ViewModels中添加逻辑。

顺便说一下,查看AutoMapper以帮助您进行映射可能值得您花些时间。绝对有助于减少编写重复映射逻辑。