我无法找到关于此的任何细节,但我遇到的问题是如果Validate调用在任何子属性上失败,则父对象的Validate函数不会被调用。简单的场景如下:
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)
{ ... }
}
如果孩子的验证失败,那么父母的验证功能就不会被调用,所以你最终必须首先修复所有子问题,然后提交,然后才能看到所有的验证失败。父节点。
如果有人可以帮助我理解为什么会这样,或者指出一些有关这方面的文件会很棒。
答案 0 :(得分:5)
根据this code在GitHub ValidationVisitor
上的2.0.0分支,如果其中一个孩子失败,将停止验证父母。
在最新的dev分支中,他们引入了新属性ValidateComplexTypesIfChildValidationFails
来控制this behavior。
Github issue与此问题相关。我不清楚如何设置这个新属性。
在Github上创建了新的issue来跟踪此问题。