2010-06-10 30 views
9

我正在使用ASP.NET MVC與實體框架POCO類和FluentValidation框架。它運行良好,並且驗證正在發生(因爲我正在使用DataAnnotations)。我甚至獲得了客戶端驗證工作。我對此非常滿意。在ASP.NET MVC中使用ViewModel與FluentValidation

由於這是一個測試應用程序,我只是爲了瞭解是否可以獲得新技術一起工作(並沿途瞭解它們),現在準備嘗試使用ViewModels而不是將實際模型傳遞給風景。我正計劃在我的服務中使用像AutoMapper這樣的東西來映射模型到ViewModel,但我首先有一個問題。

這是如何影響我的驗證?我的驗證類(使用FluentValidation編寫)應該寫入ViewModel而不是Model?還是需要在兩個地方都發生?關於DataAnnotations(和FluentValidation)的一個重大交易就是你可以在一個地方進行驗證,這個驗證可以在任何地方「工作」。它實現了這個承諾(大部分),但是如果我開始使用ViewModels,那麼我是不是失去了這種能力,必須返回到兩個地方進行驗證?

或者我只是在想它錯了嗎?

回答

4

還是我只是在想它錯了?

可能;)

如果添加所有的驗證碼到您的ViewModels你只是來驗證他們的,而不是實際的模型。真正改變的是哪些對象可以進入無效狀態。

現在我很高興作爲派只驗證ViewModels,然後將該信息傳遞迴實際的模型和DAO圖層。不管您的域名是否可以進入無效狀態,都是一個有爭議的話題,但到目前爲止,這項技術對我來說非常有用。在一個地方進行驗證,並且在持久性存儲中沒有無效對象。