使用DTO而不是域实体进行ASP.NET MVC 2验证

Kev*_*ang 5 validation asp.net-mvc

我正在努力将两个最佳实践融合在一起:

  1. 使用DataAnnotations + ModelBinding在ASP.NET MVC 2中进行验证
  2. 通过ViewModel传递数据时使用DTO而不是域实体

如果我想要传递DTO而不是域实体,那么利用DataAnnotations + ModelBinding进行验证需要我在DTO类上指定验证属性.这会导致大量重复工作,因为多个DTO可能会保持具有相同验证限制的重叠字段.这意味着每当我更改域中的验证规则时,我都必须找到与该值对应的所有DTO并更新其验证属性.

Dav*_*sky 3

每个实体不应拥有多个 DTO,因此每个 DTO 只需应用一次验证属性。如果视图需要多个实体,请包含多个 DTO 作为 ViewModel 的属性。