6

在分配 ViewModel 字段时,是否应该将域对象直接传递给 ViewModel 对象,然后由 ViewModel 对象确定如何呈现数据,或者是否应该像服务这样的另一个类将数据从 Model 分配给 ViewModel?

还:

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

4

3 回答 3

7

通常,Controller Action 获取业务对象并放置视图模型所需的任何内容。

如果您有一个包含字段名称、地址、ID 的业务对象,并且视图应该只显示名称,那么 ViewModel 只有一个字段“名称”,并且控制器操作会填充它。ViewModel 应该对您的业务类一无所知,它应该只知道它需要显示的内容。

主要/唯一逻辑是“显示逻辑”,即“如果 TotalAmount 为负,则使用 CSS ClassnegativeNumber 显示”。

于 2010-01-29T02:50:11.350 回答
4

对于 SoC,如果该逻辑与 View 有关,则它们可以安全地位于 ViewModel 甚至 View 本身中,但如果它们与业务或程序有关,则将它们分别放在模型和控制器上。

于 2010-01-29T06:50:06.303 回答
3

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

顺便说一句,检查AutoMapper以帮助您进行映射可能是值得的。绝对有助于减少编写重复的映射逻辑。

于 2010-01-29T02:47:07.090 回答