ViewModel 有自己的逻辑吗?

问题描述 投票:0回答:3

分配 ViewModel 字段时,应该将域对象直接传递给 ViewModel 对象,然后由后者确定如何呈现数据,还是应该由另一个类(如服务)将数据从模型分配给 ViewModel?

还有:

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

asp.net-mvc viewmodel
3个回答
7
投票

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

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

然后主要/唯一的逻辑是“显示逻辑”,即“如果 TotalAmount 为负数,则使用 CSS Class negativeNumber 显示它”之类的东西。


4
投票

为了关注点分离 (SoC),如果该逻辑与 View 相关,那么在 ViewModel 中甚至在 View 本身中都是安全的。但是,如果涉及到业务或程序,则将其放在Controller中。


3
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.