2010-04-25 165 views
2

我寫使用NHibernate和庫模式的ASP.NET MVC 2應用程序。我有一個包含我的模型(業務實體)的程序集,而且在我的Web項目中,我想使用扁平化對象(可能具有其他屬性/邏輯)作爲ViewModels。 這些VM包含UI特定的元數據(例如,由Html.LabelFor()方法使用的DisplayAttribute)。來驗證模型在ASP.NET MVC 2視圖模型有道apporach

的問題是,我不知道如何實現驗證,這樣,我不重複自己遍及各個層(特別是驗證規則在模型編寫一次,並傳播到視圖模型)。

我使用我的ViewModel DataAnnotations但這意味着沒有驗證規則是在模型本身罰款。我正在考慮的一種方法是從業務實體派生ViewModel對象,添加新屬性/覆蓋舊屬性,從而保留兩者之間的驗證元數據,但這是一種醜陋的解決方法。

我見過Automapper項目,這有助於映射屬性,但我不知道它是否能夠妥善處理ASP.NET MVC 2驗證的元數據。在asp.net mvc 2中使用自定義驗證框架很困難嗎?

你有什麼模式可以幫助保持DRY的有效性嗎?

回答

2

重複驗證很好。訣竅是的地方它適合的地方。

在你的情況 - 在UI,UI驗證邏輯(視圖模型道具不能爲空,以正確的格式等),在業務層 - 驗證業務邏輯(帳戶資金等)。

請勿使用DRY作爲違反SRP的藉口! :P

查看模型都應該從脫開演講角色業務層。
不要再把所有東西都粘在一起。


我猜Automapper無法處理。 :)