流畅的验证允许空值或具有结构的值

Fluent validation allow empty or value with structure

我有一个 sort prop,它可以是空的或类似的值:

sort=""
sort=["name","desc"]
sort=["name","asc"]


RuleFor(r => r.Sort)
                .NotEmpty()
                .When(nr => nr.Contains("name"))
                .WithMessage("Invalid Sort");

如何允许空和非空包含一个字符串?

您可以只指定一个自定义规则。假设 Sort 属于 string[]:

RuleFor(r => r.Sort)
    .NotNull()
    .Must(x => x.Length == 0 || (x.Length == 2 && x[0] == "name" && 
        (x[1] == "desc" || x[1] == "asc")))
    .WithMessage(...);

如果您需要重用此逻辑,只需使用自定义规则生成器 as explained here