Dot-Net
DataAnnotations 與 IDataErrorInfo
DataAnnotations 與 IDataErrorInfo
兩者的優點和缺點?一個比另一個的好處?(尤其是與 MVC 相關的)
因為我不想開始一個新問題,所以遲到了討論。我的出發點是確定應用於中型 ASP.NET MVC 項目的最佳實踐。
讓我先總結一下我們的選擇:-
- IDataErrorInfo 實現簡單。您只需要在 Model 類中派生 IDataErrorInfo 即可。問題是你讓你的模型綁定來執行你的業務規則。業務規則應由模型強制執行。IDataErrorInfo(同樣適用於 DataAnnotations)的另一個問題是(從Steven Sanderson 的書中解釋,它不能報告與單個屬性相關的多個錯誤或與 whle 對像模型相關的多個錯誤。
2)對我來說,DataAnnotation 就像一個模式檢查(驗證)。這是您的應用程序應該做的第一個檢查。但是(恕我直言),它不適合實施您的業務規則。
3)實現你自己的ModelBinder。雖然這可以做到,但認真地說,ModelBinder 的用途是解析數據並將其綁定到模型,而不是執行複雜的驗證和業務規則檢查。我會讓業務規則檢查在您的模型/域層中實現。
4)自己動手 - 使用服務層進行驗證(請參閱this。所示範例具有使用介面類從控制器和模型狀態解耦的優點。另一個選擇是從模型層拋出適當的異常。後一種選擇在單獨的應用程序(例如 WCF 應用程序)中實現服務層時很有用。
你怎麼看?對於大中型項目,您使用過(或打算採用)以上哪些選項,為什麼?
乾杯