我有两个字段,我需要使用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