我挣扎了如下两种最佳实践起来:ASP.NET MVC 2的验证使用DTO的,而不是域实体
- 使用DataAnnotations + ModelBinding进行验证在ASP.NET MVC 2
- 使用替代的DTO通过视图模型
传递域实体的数据时,如果我要越过的DTO,而不是域的实体,然后利用DataAnnotations + ModelBinding进行验证会要求我指定我的DTO类属性验证。这会导致很多重复的工作,因为多个DTO可能拥有相同验证限制的重叠字段。这意味着,只要我更改了域中的验证规则,就必须找到与该值对应的所有DTO并更新其验证属性。
这似乎有点限制。如果一个视图需要一个实体的所有属性而另一个视图只需要少数几个属性呢?那个用例是不是要求多个DTO? – 2010-04-03 15:06:16
我同意凯文,我可以想到的情况是我会想多个DTOs用于显示目的。然而,只有一个DTO提交数据将是一个明智的方法。 – roryf 2010-04-03 15:08:42
DTO是您的数据包,ViewModel是混搭的场所。我认为不同的数据有多个DTO是一个好主意,它会陷入你不希望维护的混乱局面。 – 2010-04-03 16:18:17