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

时间:2010-04-08 03:19:29

标签: asp.net-mvc viewmodel

我看到很多MVC示例,其中域对象直接传递给视图,如果您的视图很简单,这将正常工作。

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

坏?无法使用Automapper。 ;)

好?没有什么可以想到的。

我认为你没有做过任何可怕的事情。对你起作用吗?如果是这样,为什么不呢?

相关问题