IValidatableObject中的Validate方法在所有场景下都不会返回ValidationResult

本文关键字:ValidationResult 返回 Validate 中的 方法 IValidatableObject | 更新日期: 2023-09-27 18:05:02

我一直在使用Validate方法进行一些我必须做的条件验证,今天当我这样做的时候,我开始认为我的Validate方法。签名为

IEnumerable<ValidationResult> Validate(ValidationContext validationContext);

但是当我实现它时,它不会在所有条件下返回验证结果的Enumerable。

现在我可能在这里错过了一些明显的东西,但通常编译器会抱怨所有的代码路径不返回值,但它永远不会为验证方法。

示例实现

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
    if (IsPremiumCandidateSignup && SelectedProductId < 1)
    {
        yield return
            new ValidationResult("Please choose a membership option", 
                                  new List<string> { "SelectedProductId" });
    }
} 

所以在这种情况下,它只会在if条件满足时返回。因此,如果有人能给我解释一下,或者指出一些资源,我可以阅读更多关于这方面的信息,我将不胜感激。

IValidatableObject中的Validate方法在所有场景下都不会返回ValidationResult

如果满足以下条件,它将返回一些东西:

if(IsPremiumCandidateSignup && SelectedProductId < 1)

所以如果不是高级注册,没有选择产品,它将不会返回任何东西

相关文章:
  • 没有找到相关文章