ASP.NET Core Web API - 如何使用 Fluent Validation 实现可选验证

ASP.NET Core Web API - How to implement optional validation using Fluent Validation

我有这个验证器在 ASP.NET Core-6 Web API 中使用 Fluent Validation :

public TransactionValidator()
{
    RuleFor(p => p.Token)
        .Cascade(CascadeMode.StopOnFirstFailure);
}

令牌应该为空,或者它的输入值正好是 6 个长度。

如何完成此操作?

Fluent 验证支持 predicate validator 通过 Must:

RuleFor(p => p.Token)
    .Cascade(CascadeMode.Stop)
    .Must(s => s == null || s.Length == 6);

或者用conditions也可以达到同样的效果:

RuleFor(p => p.Token)
    .Cascade(CascadeMode.Stop)
    .Length(6)
    .When(c => c.Token != null);