2011-10-28 80 views
1

我希望這裏的人可以給我一些關於如何正確地做到這一點的想法。使用FluentValidation時將域模型驗證錯誤映射到ViewModel

目前我有一個ViewModel,我用來渲染我的屏幕。 View模型實際上包含幾個域模型的展平數據。我用屬性裝飾ViewModel來進行基本驗證,但真正的驗證工作發生在服務層。在服務層存在驗證錯誤時會發生此問題。該屬性的名稱(即 - UserName)與ModelState中的條目(即--RegistrationViewModel.UserName)不匹配。

有沒有人有如何處理這個建議?

在此先感謝!

史蒂芬

回答

1

也許不是一個回答你的問題,但是這是怎麼了,我通常做法是:

在我不使用任何驗證框架的域模型,我不使用它給用戶友好的錯誤信息。我總是確保模型處於有效狀態。當設置了無效值(屬性設置器)時,我會引發異常。我使用域對象的構造函數,通過使用默認值和構造函數參數,在實例化時始終使它們處於有效狀態。真正簡單但功能強大,因爲您始終可以確定您的模型處於有效狀態。你應該單元測試你的域對象是絕對確定的。這種方法也適用於orm's。

所以我只對視圖模型使用流利的驗證來給用戶友好的消息。

+3

這種方法的問題是,我會被卡在我的業務驗證邏輯(複雜的規則與簡單的字段是必需的類型),以便我可以得到更好的消息。我不認爲這是一個好方法。 – Steven

0

這不是最好的解決方案,但最後我依賴於基本的客戶端驗證來顯示基本的字段驗證,任何得到的信息都會在驗證摘要中顯示出來並在服務中驗證。