gpt4 book ai didi

c# - 自定义验证未执行

转载 作者:太空狗 更新时间:2023-10-30 00:34:36 24 4
gpt4 key购买 nike

我在 WPF 应用程序中有一个 View 模型类,它具有一些非常复杂的验证。我已经实现了 IValidatableObject提供自定义验证逻辑的接口(interface)。问题是我的 IEnumerable<ValidationResult> Validate(ValidationContext validationContext)永远不会被调用!

这是尝试验证的代码: Validator.TryValidateObject(RMA, new ValidationContext(RMA, null, null), result);

关于为什么 Validator 的任何想法对象没有调用我的自定义验证代码?

最佳答案

问题是我在自定义类中的一个字段上设置了[Required] 并且Validator 将不会执行自定义验证,直到所有数据注释验证已经完成。删除 [Required] 允许执行自定义验证。

编辑:

验证对象时,在 Validator.ValidateObject 中应用以下过程:

  1. 验证属性级属性
  2. 如果任何验证器无效,则中止验证并返回失败
  3. 验证对象级属性
  4. 如果任何验证器无效,则中止验证并返回失败
  5. 如果在桌面框架上并且对象实现了IValidatableObject,则调用它的Validate方法并返回任何失败

http://jeffhandley.com/archive/2009/10/16/validator.aspx

验证将在第 2 步中止。

关于c# - 自定义验证未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7149899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com