如何在一个规则中添加多个IF条件?

Iva*_*ono 2 c# fluentvalidation

如果我有以下规则:

if (a == true && b == 0)
   return errorsenum.somerror1;
else if (b < c)
   return errorsenum.somerror2;
Run Code Online (Sandbox Code Playgroud)

如何将上述实现为FluentValidation规则?

编辑:

这两条规则有效吗?

RuleFor(x => x.b).GreaterThan(0).When(x => x.a);
RuleFor(x => x.b).GreaterThanOrEqualTo(x => x.c);
Run Code Online (Sandbox Code Playgroud)

小智 7

你基本上就在那里.我想这就是你想要的:

RuleFor(x => x.b).GreaterThan(0).When(x => x.a).WithMessage("SomeError1");
RuleFor(x => x.b).GreaterThanOrEqualTo(x => x.c).When(x => !x.a).WithMessage("SomeError2");
Run Code Online (Sandbox Code Playgroud)

因此,只需过滤第二个规则,使其仅在"a"为false时运行,并将自定义消息添加到每个规则.

即使第一个规则失败,流畅验证总是会耗尽所有规则,因此如果您想要有选择性,则需要继续使用When().

如果在== true时有一堆规则要验证,则可以使用此模式:

When(x => x.a, () =>
{
    RuleFor(x => x.b).GreaterThan(0).WithMessage("SomeError1");
    RuleFor(x => x.c).LessThan(0).WithMessage("SomeError3");
});
Run Code Online (Sandbox Code Playgroud)