2010-11-26 99 views
1

在開發過程中,我遇到了一個叫做「域模型與視圖之間的阻抗不匹配」的問題。爲了解決這個問題,我決定使用ViewModel模式 - 爲每個視圖(強類型)我們創建viewmodel類。但是,驗證邏輯的位置在哪裏?在viewmodel類中還是在我們的領域模型對象中?我們需要執行操作來查詢數據庫 - 在控制器操作中,然後填充viewmodel或直接在viewmodel中?ASP.NET MVC查看模型模式 - 驗證和數據庫操作

謝謝。

回答

2

您應該有視圖模型的驗證邏輯。這是視圖發送的內容以及應該驗證的內容。就填充viewmodel而言,這裏介紹如何繼續:編寫一個查詢數據庫並返回模型的存儲庫。然後將這些模型映射到視圖模型(AutoMapper可以幫助您在這裏)。最後將視圖模型返回到視圖。這也適用於其他方式:用戶將一些數據發佈到控制器操作,因爲視圖模型的形式一旦被驗證就映射回模型並傳遞到存儲庫進行更新。

作爲數據註釋的替代方法,您可以查看FluentValidation以驗證您的視圖模型。它與ASP.NET MVC的integrates nicely