asp.net MVC应该是View-Model封装领域模型吗?

Mys*_*ter 5 asp.net-mvc viewmodel

我已经看到很多MVC示例,其中domain-objects直接传递给视图,如果您的视图很简单,这将正常工作.

常见的替代方法是使视图模型具有与您的域模型相同的所有属性+您的视图可能需要的任何额外属性(例如'confirmPassword').

在进行太多阅读之前和发现AutoMapper之前,我开始创建自己的视图模型变体,其中域对象(或多个域对象)只是视图模型的属性.

我做了一件坏事吗?这种方法可以带来哪些问题或好处?在什么情况下这种做事方式可以很好地运作?

Rya*_*yan 4

将域模型直接暴露给视图本身并没有什么坏处。主要风险来自于暴露您无意的属性,例如 Employee 对象上的薪资字段。如果您返回 JSON,请务必注意这一点。

另一件需要注意的事情是当您从编辑表单绑定回来时。您应该了解所涉及的具体风险。基本上,恶意用户可能会将字段添加到 POST 中,而这些字段恰好与您不想编辑的字段相匹配。我总是绑定到一个中间对象,该对象在将其映射回域之前传递到服务中。