0

我使用接口來定義我的對象在我的MVC控制器,並使用依賴注入框架注入各種不同的具體實現。注入模型,但使用接口DataAnnotations

該對象的驗證使用DataAnnotations,但問題來了。

因爲我使用它獲取到控制器注入模型的接口方面,DataAnnotations必須對接口,這是錯誤的,因爲每一個被注入的具體實施有它自己的DataAnnotations驗證規則。

如何確保在執行驗證時使用注入的模型DataAnnotations?

+0

你有一個很大的麻煩!我認爲你只能使用IValidatableObject來存檔它,所以每個對象都會自我驗證它!我不認爲這是可能的注入DataAnnotations沒有一些複雜的硬編碼! – Fals

回答

1

您應該使用DI框架將注入庫注入控制器,而不是模型。模型不應該被注入。模型是通過注入的存儲庫接口來檢索/更新的東西。驗證在模型上執行。

+0

如何使用DataAnnonation在UI和業務層執行此驗證? – Coppermill

+0

我個人並不使用任何DataAnnotations。我使用FluentValidaton.NET在我的視圖模型和我的域模型上執行驗證。規則是不同的,所以我有不同的驗證器。我想你也可以爲你的視圖模型和你的域模型有一組不同的DataAnnotations。 –

+0

哼,困惑,你爲什麼要在用戶界面上對你的域模型進行不同的驗證?最好有一個公共區域來設置驗證,然後由用戶界面驗證,然後驗證domian模型。 – Coppermill