当前位置:  开发笔记 > 后端 > 正文

MVC:数据模型和视图模型

如何解决《MVC:数据模型和视图模型》经验,为你挑选了3个好方法。

我在过去读过一些关于模型的MVC建议,说明你不应该为域和视图重用相同的模型对象; 但我一直没能找到任何人愿意讨论为什么这是不好的.

我认为创建两个独立的模型 - 一个用于域,一个用于视图 - 然后在它们之间进行映射会产生大量重复,加上繁琐的映射代码(其中一些可能会被像AutoMapper这样的东西减轻)很可能容易出错.

是什么让这两个问题的单独模型值得重复和映射代码的麻烦?



1> Jimmy Bogard..:

从本质上讲,两个模型是关于分离关注点.我希望我的View可以使用单个模型.我希望我的域模型能够代表我使用领域专家构建的概念模型.ViewModel经常有技术限制.域模型是关于POCO的,并且不受显示(查看)或持久(在数据库中或其他方面)的数据的技术约束的约束.

假设我在屏幕上显示了三个实体.这是否意味着我需要强迫三者之间的关系?或者只创建一个包含所有三个项目的ViewModel组件对象.使用单独的ViewModel,View关注点与我的域名分开.



2> Henry..:

为什么?'因为视图不应该具有使用模型对象的能力!

想象一下,您将项目传递给Web设计人员来执行视图层.突然之间,他/她有能力通过模型层来处理应用程序的数据.这不好.

因此,始终只传递视图所需的数据,而不是传递方法的对象.



3> liammclennan..:

JP Boodhoo的文章Screen Bound DTO将帮助您了解设计优势.

还有一个安全的好处,我已经写了.

使用演示模型可以简化您的视图.这一点尤其重要,因为视图通常很难测试.通过使用表示模型,您可以将大量工作移出视图并进入域 - >表示模型.格式化,处理空值和展平对象图等事情.

我同意额外的映射很痛苦,但我认为你可能需要在特定的环境中尝试这两种方法,看看什么最适合你.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有