我正在使用DataAnnotations來驗證使用類頂部的MetadataType標記的自定義類(LINQ to SQL auto generated)。我很喜歡DataAnnotations,它在簡單,常見的場景中運行良好。例如。ASP.Net MVC2使用DataAnnotations以不同的方式驗證相同類的兩個ViewModel
[MetadataType(typeof(Person_Validation))]
public class Person
但是如果你需要在不同情況下對班級應用兩套不同的驗證規則呢?
我的情況:某些字段在www面向公衆的網站上是強制性的,但在內部管理網站上不是強制性的。但是這兩個網站都有一個「創建新的」相同對象/類的視圖。
這是它成爲DataAnnotations HELL面..
我一直在使用不同的驗證兩種不同的ViewModels適用於每個人,從人與繼承應用到他們每個人不同的驗證兩類嘗試。但是,所有的道路似乎都與DRY校長髮生衝突,你最終會沿着這條線路完全重新規定基礎班級結構的所有屬性。當您只有一個驗證規則集時,您不必這樣做。因此,對於複雜的物體來說,它很快變得很糟糕而且不實用。
這可能使用DataAnnotations和什麼是最好的DRY體系結構?
我得出了相同的結論該AutoMapper需要參與,但我希望我錯了。加載「編輯」視圖時會出現問題。你可以讀取id參數,然後在將其傳遞給View之前先獲取需要編輯的對象。此時,您需要以某種方式根據您獲取的對象設置ViewModel中的值。這是所有路徑導致地獄,否則AutoMapper。我可以使用兩個不同的驗證規則集使這個完整的體系結構完美地工作,但是設置檢索到的對象的編輯值是它吹的地方。 – Aaron 2011-01-08 11:14:07