我找不到这方面的任何详细信息,但我遇到的问题是,如果对任何子属性的验证调用失败,则不会调用父对象的验证函数。下面的简单场景:
public class Child : IValidateObject
{
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{ ... }
}
public class Parent : IValidatableObject
{
public Child Child { get; set;}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{ ... }
}
如果子项中的验证失败,则不会调用父项的验证函数,因此您最终必须先修复所有子项问题,然后提交,然后才能看到父项的所有验证失败。
如果有人可以帮助我理解为什么会发生这种情况,或者向我指出一些与此相关的文档,那就太棒了。
根据 this code在 GitHub 上的 2.0.0 分支 ValidationVisitor
中,如果其中一个子节点失败,将停止验证父节点。
在最新的开发分支中,他们引入了新属性 ValidateComplexTypesIfChildValidationFails
来控制 this behavior .
Github issue与这个问题有关。我不清楚如何设置这个新属性。
新建issue在 Github 上跟踪此问题。
我是一名优秀的程序员,十分优秀!