簡體   English   中英

在IValidatableObject上設置ValidationContext的Items集合嗎?

[英]Set Items collection of ValidationContext on IValidatableObject?

我有一個從IValidateableObject派生的視圖模型類,並且正在將Validate方法與ValidationContext結合使用,以從控制器中對其進行評估。

我希望能夠針對ObjectInstance中視圖模型類本身的屬性進行更多測試。 我可能可以將這些東西添加到模型中,然后一切都會很容易,但是我覺得這些東西並不是真正屬於視圖模型類的,因為它們更多地與該對象的當前狀態有關。

我想知道ValidationContext中的Items集合是否適合存儲此類內容...唯一的問題是,我似乎找不到能夠解釋如何將內容添加到該詞典中的資源。

那有意義嗎? 任何人都可以在檢查對象的ModelState之前提供有關如何填充ValidationContext.Items的解釋嗎?

更新#1-我在關於EF CTP5()的舊博客條目中發現了以下內容,但不確定如何使用此信息:

因此,可以使用可以完全替代內置驗證或過濾掉內置驗證返回的某些驗證錯誤的自定義驗證邏輯。 有關DbContext.ValidateEntity( http://blogs.msdn.com/b/adonet/archive/2010/12/15/ef-feature-ctp5-validation.aspx )方法的其他細節是此方法的第二個參數,看起來像這樣:

IDictionary<object, object> items

默認情況下,其值始終為null。 但是,重寫DbContext.ValidateEntity()可以通過調用以下方法將非null值傳遞給此方法:

return base.ValidateEntity(entityEntry, myItems);

更新#2-我試圖走上使用自定義模型活頁夾的道路,但我也碰壁了-似乎沒有一種方法可以簡單地將項目添加到ValidationContext然后調用基。 OnModelUpdated(controllerContext,bindingContext)方法。

如果您要構建自己的模型驗證器,請看一下這個問題 如果聽起來工作量太大,則可以嘗試FluentValidation項目,該項目可讓您向視圖模型添加自定義驗證規則,並將其存儲在自己的類中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM