我掙扎瞭如下兩種最佳實踐起來: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