在典型的MVC應用程序中,我們驗證了發生在許多不同的地方。它可能在客戶端,在控制器中,然後在數據級別。如果您有業務層,那麼還有其他驗證。如何統一跨層/層的驗證
我們如何統一所有這些,以便我們不違反DRY,並在驗證更改時導致支持噩夢?一個子問題是如何在所有圖層上啓用基於模型的動態驗證。
例如:我們可能有一個具有數據註釋屬性的ViewModel。在MVC2/3中,它統一了客戶端和控制器驗證,但對數據模型沒有幫助(除非將數據模型用作視圖模型,這不是一種好的做法)。
這意味着您必須將相同的驗證添加到數據模型和業務層,並複製它。更重要的是,數據模型可能與視圖模型的驗證要求略有不同(例如,整個數據記錄可能包含多步向導的多個視圖模型,並且只能保存完整的記錄)。
有些人在使用帶有部分類的EF或L2S等ORM時,會將數據模型的複雜驗證添加到數據模型中,但我不確定它是否是正確的路徑。它適用於主要面向數據的應用程序(數據輸入類型的應用程序),但不適用於具有更多非數據業務邏輯的應用程序。
我想要的是一種方法來爲所有圖層生成驗證,或者一種鉤入單個驗證系統的方法。有這樣的事嗎?
也許應該有像Automapper這樣的翻譯層間驗證規則的東西。 – Benjamin