【发布时间】:2011-06-19 10:40:18
【问题描述】:
我知道将域模型用作视图模型可能很糟糕。如果我的域模型有一个名为 IsAdmin 的属性并且我有一个创建控制器操作来创建用户,那么即使我没有在我的视图中公开这样的文本字段,也有人可以更改我的表单并让它发布一个 IsAdmin=true 表单值.如果我使用模型绑定,那么当我提交我的域模型时,那个人现在将成为管理员。因此,解决方案变成只在视图模型中公开我需要的属性,并使用 AutoMapper 之类的工具将我返回的视图模型对象的属性值映射到我的域模型对象的属性值。但我读到类的绑定属性可用于指示模型绑定器应该绑定和不应该绑定哪些属性。那么,创建两个独立的类(域模型和视图模型)的真正原因是什么,它们本质上代表相同的事物,然后在映射它们时会产生开销?这是否更像是一个代码组织问题?如果是,我有什么好处?
编辑
对于与域模型分离的视图模型,我遇到的最重要的原因之一是需要实现 MVVM 模式(基于 Martin Fowler 的 PM 模式)来管理复杂的 UI。
【问题讨论】:
标签: asp.net-mvc-3 model viewmodel modelbinders