gpt4 book ai didi

c# - 如果子项验证失败,IValidatableObject.Validate 不会在父项上调用

转载 作者:太空宇宙 更新时间:2023-11-03 19:43:45 25 4
gpt4 key购买 nike

我找不到这方面的任何详细信息,但我遇到的问题是,如果对任何子属性的验证调用失败,则不会调用父对象的验证函数。下面的简单场景:

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 上跟踪此问题。

关于c# - 如果子项验证失败,IValidatableObject.Validate 不会在父项上调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49122976/

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