回答
因爲我不想開始一個新問題,所以遲到了討論。我來自哪裏的是確定適用於中型ASP.NET MVC項目的最佳實踐。
讓我先總結一下我們的選擇: -
1)IDataErrorInfo的簡單實現。所有你需要的是在Model類中派生IDataErrorInfo。問題在於你讓模型綁定來執行業務規則。業務規則應該由模型執行。另一個用於IDataErrorInfo的捕獲(同樣適用於DataAnnotations)是(從Steven Sanderson's book轉述它不能報告與單個屬性有關的多個錯誤或與該whle對象模型有關的多個錯誤。)
2)DataAnnotation對我來說就像模式檢查(驗證)。這是您的應用程序應該執行的第一個檢查。但是(恕我直言),它不適合實施你的業務規則。
3)實現你自己的ModelBinder。儘管可以這樣做,但嚴肅地說,ModelBinder的用法是解析數據並將其綁定到您的模型,而不是執行復雜的驗證和業務規則檢查。我將離開業務規則檢查在您的模型/域層中實施。
4)自己動手 - 通過服務層進行驗證(見this。所示示例具有使用接口類與控制器和模型狀態分離的優點,另一種選擇是從模型層中引發適當的異常。當你在一個單獨的應用程序(例如WCF應用程序)中實現服務層時,後一選項非常有用。打算採用),爲什麼?
乾杯
看起來DataAnnotations在MVC 2.0中獲得官方支持。 Scott Guthrie在使用DataAnnotations在2.0中進行模型驗證時發佈了good article。鑑於該團隊似乎是朝着這個方向發展的,你可能會認爲這是一個有利於投票的選舉。
DataAnnotations更容易實現,並直接支持MVC 2.0。
然而,IDataErrorInfo
允許你做更復雜的驗證(即:產生多個屬性的驗證等)。
然而,這兩者可以混合使用。沒有什麼能阻止你實施這兩種技術。
這也是possi使用IValidatableObject接口與ComponentModel.DataAnnotations結合使用。有了這個接口,你也可以執行一個產生多個屬性的驗證。 – 2012-11-29 12:22:37
- 1. IDataErrorInfo vs IValidatableObject?
- 2. 結合DataAnnotations和IDataErrorInfo的WPF的
- 3. NHibernate.Validator vs DataAnnotations
- 4. IDataErrorInfo vs驗證規則與異常
- 5. DataAnnotations
- 6. ObservableCollection上的IDataErrorInfo
- 7. winforms中的IDataErrorInfo
- 8. IDataErrorInfo的通知
- 9. WPF IDataErrorInfo的整合
- 10. 力IDataErrorInfo的驗證
- 11. monodroid中的DataAnnotations
- 12. DataAnnotations中的SelfValidation?
- 13. WCF上的DataAnnotations
- 14. WPF MultiSelect組合框IDataErrorInfo驗證
- 15. IDataErrorInfo未更新
- 16. Async IDataErrorInfo - WPF
- 17. IDataErrorInfo問題
- 18. WPF IDataErrorInfo問題
- 19. wpf idataerrorinfo combobox
- 20. IDataErrorInfo組合框
- 21. DataAnnotations MVC
- 22. dataannotations scaffoldcolumn?
- 23. 實現IDataErrorInfo接口
- 24. IDataErrorInfo最佳實踐
- 25. 忽略IDataErrorInfo通知
- 26. WPF ListBox +綁定+ IDataErrorInfo =?
- 27. WPF/C#IDataErrorInfo Not Firing
- 28. IDataErrorInfo的通過實體類
- 29. IDataErrorInfo是如何工作的?
- 30. IDataErrorInfo的與用於產權
關於第1點,我相信INotifyDataErrorInfo將在.Net 4.5中受支持,並且會處理單個屬性的多個錯誤。 – 2012-04-11 15:40:18