当另一个属性为 true 时流畅的验证器

Haw*_*wke 2 fluentvalidation

我正在尝试使用 FluentValidation 来验证属性“用户名”是否另一个属性“找到”为 true。

Object Contains:
   string Username
   bool Found

RuleFor(x => x.Username)
    .NotEmpty().DependentRules(() => {
                RuleFor(y => y.Found).Equals(true); //Not valid syntax
            })
    .WithMessage("Not Found");
Run Code Online (Sandbox Code Playgroud)

不幸的是,似乎没有简单的方法可以做到这一点?

rgv*_*lee 7

使用该When子句。

RuleFor(x => x.Username).NotEmpty().When(x => x.Found);
Run Code Online (Sandbox Code Playgroud)

工作示例

依赖规则有点不同;基本上,仅当附加到的规则通过时,才会测试依赖规则块中指定的规则。

根据doco

RuleFor(x => x.Surname).NotNull().DependentRules(() => {
  RuleFor(x => x.Forename).NotNull();
});
Run Code Online (Sandbox Code Playgroud)

这里,只有当姓氏规则通过时,才会运行针对名字的规则。