在分配 ViewModel 字段时,是否应该将域对象直接传递给 ViewModel 对象,然后由 ViewModel 对象确定如何呈现数据,或者是否应该像服务这样的另一个类将数据从 Model 分配给 ViewModel?
还:
编辑:将视图模型分为接收者和演示者有什么意义吗?(而不是在更新时仅绑定某些字段?)
在分配 ViewModel 字段时,是否应该将域对象直接传递给 ViewModel 对象,然后由 ViewModel 对象确定如何呈现数据,或者是否应该像服务这样的另一个类将数据从 Model 分配给 ViewModel?
还:
编辑:将视图模型分为接收者和演示者有什么意义吗?(而不是在更新时仅绑定某些字段?)
通常,Controller Action 获取业务对象并放置视图模型所需的任何内容。
如果您有一个包含字段名称、地址、ID 的业务对象,并且视图应该只显示名称,那么 ViewModel 只有一个字段“名称”,并且控制器操作会填充它。ViewModel 应该对您的业务类一无所知,它应该只知道它需要显示的内容。
主要/唯一逻辑是“显示逻辑”,即“如果 TotalAmount 为负,则使用 CSS ClassnegativeNumber 显示”。
对于 SoC,如果该逻辑与 View 有关,则它们可以安全地位于 ViewModel 甚至 View 本身中,但如果它们与业务或程序有关,则将它们分别放在模型和控制器上。
根据我的经验,我使用服务将模型映射到 ViewModel。我没有在我的 ViewModel 中加入逻辑。
顺便说一句,检查AutoMapper以帮助您进行映射可能是值得的。绝对有助于减少编写重复的映射逻辑。