我有这样的规则:
RuleFor(m => m.Title).Length(1, 75);
但是,如果Title为null,我仍然会得到验证,说明标题长度必须介于1到75个字符之间,您输入的是0.
如何更改规则以允许空标题,但如果指定了一个,则必须介于1到75个字符之间?感谢。
答案 0 :(得分:10)
我在这里做了一些假设,但我猜你的标题不是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));
}
}
答案 1 :(得分:2)
正如Yannick Meeus在上面的帖子中所建议的,我们需要添加'When'条件来检查not null。 它解决了这个问题。 在这里,我想允许电话号码为空,但如果指定,则它应该只包含数字。
RuleFor(x => x.PhoneNumber).Must(IsAllDigits).When(x => !string.IsNullOrEmpty(x.AlternateNumber)).WithMessage("PhoneNumber should contain only digits");