我有兩個字段,我需要使用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. jQuery驗證,出兩個空白領域,至少有一個字段必須填寫或兩者
- 3. System.InvalidOperationException:可爲空的對象必須有一個值。 Linq to sql
- 4. InvalidOperationException可爲空的對象必須有一個值
- 5. 值必須在兩個表
- 6. 要麼側邊欄或內容顯示,但不能兩者都在同一時間
- 7. Grails域驗證器:兩個字段可以爲空,但不能同時爲空
- 8. 主要必須返回一個值
- 9. 爲什麼有時我必須parseJSON,有時候不需要做Ajax請求?
- 10. 有一個布爾值必須設置爲0而不是false
- 11. 爲什麼PostgreSQL必須有所不同(方案不存在)?
- 12. 我必須打開兩個連接才能執行兩個不同的查詢?
- 13. 爲什麼perl中的'if'子句必須帶有大括號或者沒有?
- 14. 一個或另一個但不是兩者
- 15. 管理兩個組合框,其中只有一個必須有一個值
- 16. 定製軌驗證,允許兩個項目一個是空但不能同時
- 17. NHibernate和MySQL的可空對象必須有一個值
- 18. 可空對象在Linq中必須有一個值where子句
- 19. 可空對象必須有一個值#2
- 20. 錯誤消息可空對象必須有一個值
- 21. 的Linq:可空對象必須有一個值
- 22. 我需要一個檢查約束兩列,至少有一個不能爲空
- 23. 'Setter.Property'必須具有非空值
- 24. WCF服務是否必須爲每個服務都有一個MetaDataExchange端點,或者我可以只有一個?
- 25. GridView控件,它必須是一個IListSource,IEnumerable的,或者的IDataSource
- 26. 爲什麼兩個SqlDataAdaptor都必須指定兩次表?
- 27. 是否有可能在pom.xml中有兩個mainClass,或者能夠在同一個pom.xml中運行兩個類?
- 28. 爲什麼每個表都必須有一個主鍵?
- 29. 錯誤:`callback`必須有兩個或多個參數 - readr
- 30. Swift Firebase必須是非空字符串,不能包含'。' '#''$''['或']'