我有兩個字段,我需要使用Microsoft企業庫驗證生成一個屬性,以便任一個或必須具有值,但兩者不能同時爲空。要麼或必須有一個值,但兩者不能同時爲空
0
A
回答
1
使用自定義驗證程序。
[HasSelfValidation]
public class ValidateMe {
[SelfValidation]
public void ValidateFieldNotNul(ValidationResults validationResults)
{
.. start psudo code
if(xor)
validationResults.AddResult(new ValidationResult("One must not be null",...));
}
}
0
驗證應用程序塊有一個PropertyComparisonValidator
它可以讓你比較一個屬性與另一個屬性。不幸的是,這個驗證器只允許ComparisonType
:Equal, NotEqual, GreaterThan, GreaterThanEqual, LessThan, LessThanEqual
,所以這實際上並沒有幫助你。
我覺得你有2種選擇:
- 自我驗證
- 自定義驗證
自我驗證(通過@Nix所示)可能是最簡單的,但需要這種重新實現了每一個你有這個需求的場景(至少要把鉤子稱爲一種常用的方法)。
創建一個custom validator將導致代碼可以添加到配置或直接歸因於實體,並且可以輕鬆地重用。
自定義驗證器肯定會做更多的工作,但如果您需要重用(例如可以在應用程序中重用)或更喜歡該設計,則可能值得。
相關問題
- 1. 試圖讓空值,但...「可空對象必須有一個值」
- 2. 必須有一個字符串值,或者是它實現IRouteConstraint
- 3. 當一個字段有值時,另一個字段必須爲空
- 4. jQuery驗證,出兩個空白領域,至少有一個字段必須填寫或兩者
- 5. 兩者功能有什麼不同?
- 6. 可爲空的對象必須有值?
- 7. InvalidOperationException可爲空的對象必須有一個值
- 8. 可爲空的對象必須有一個值。 VB.NET
- 9. 可爲空的對象必須有一個值。 SQL Report Builder
- 10. System.InvalidOperationException:可爲空的對象必須有一個值。 Linq to sql
- 11. 可爲空的對象必須有一個值。在VB.NET
- 12. 值必須在兩個表
- 13. 要麼側邊欄或內容顯示,但不能兩者都在同一時間
- 14. 主要必須返回一個值
- 15. Grails域驗證器:兩個字段可以爲空,但不能同時爲空
- 16. 必須不要實體框架自動更新一些FK屬性?是的,他有,但有時不。爲什麼?
- 17. 爲什麼有時我必須parseJSON,有時候不需要做Ajax請求?
- 18. HTTPGET屬性必須爲一個方法,但不是另一個
- 19. 將兩列限制爲兩個字段必須有數據的位置,或者兩個字段都必須爲NULL
- 20. 屬性???必須有目前的屬性名稱或ref,但不是兩個「
- 21. 兩列不能同時爲空在SQL
- 22. 聲明空字節 - 可爲空的對象必須有一個值?
- 23. 有一個布爾值必須設置爲0而不是false
- 24. 爲什麼perl中的'if'子句必須帶有大括號或者沒有?
- 25. 爲什麼PostgreSQL必須有所不同(方案不存在)?
- 26. 我必須打開兩個連接才能執行兩個不同的查詢?
- 27. 一個或另一個但不是兩者
- 28. 管理兩個組合框,其中只有一個必須有一個值
- 29. 需要一個場或其他,但不能留空
- 30. 在同一個必須過濾器中不能有一個術語和geo_distance_range