FluentValidation允许null还是指定长度?

BBa*_*r42 7 fluentvalidation

我有这样的规则:

RuleFor(m => m.Title).Length(1, 75);
Run Code Online (Sandbox Code Playgroud)

但是,如果标题是空的,我仍然得到验证,说明标题长度必须在1个到75字符之间,输入0.

如何更改规则以允许空标题,但如果指定了一个,则必须介于1到75个字符之间?谢谢.

Yan*_*eus 14

我的工作有点假设在这里,但我猜你的标题没有设置为null而是string.Empty.您可以通过执行以下操作向任何规则添加特定子句:

public class Thing
{
    public string Title { get; set; }
}

public class ThingValidator : AbstractValidator<Thing>
{
    public ThingValidator()
    {
        this.RuleFor(s => s.Title).Length(1, 75).When(s => !string.IsNullOrEmpty(s.Title));
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 可以使用`Unless()`而不使用负数来代替`When()`和正数:`.Unless(s =&gt; string.IsNullOrEmpty(s.Title))`。 (2认同)