2014-02-20 4 views
1

Я использую FluentValidation for .NETУсловно выполнение правила с FluentValidation для .NET

У меня есть эти три правила:

RuleFor(customer => customer.Name).NotEmpty(); 
RuleFor(customer => customer.Phone).NotEmpty(); 
RuleFor(customer => customer.Birthday).NotEmpty(); 

И я хочу, чтобы выполнить этот только если три другие проверенную успешно.

RuleFor(customer => customer).Must(IsUnique).WithMessage("..."); 

Мое требование не использовать Chaining валидаторов как here, потому что первые три не будет оцениваться, если предыдущий каждого из них не прошел проверку.

Что я хочу, если один из первых трех пуст, чтобы отобразить пользователю требуемые поля. Если все три не пусты, то я хочу проверить последний.

ответ

2
RuleFor(customer => customer) 
.Must(IsUnique) 
.WithMessage("...") 
.When(x => !string.IsNullOrEmpty(x.Name) && !string.IsNullOrEmpty(x.Phone) &&!string.IsNullOrEmpty(x.Birthday)); 
+0

+1 Это не совсем то, что я хочу, потому что я хочу выполнить последнее правило, не повторяя все предыдущие проверки. Первые три правила должны быть выполнены до последнего. Однако это хороший шаг к решению. – Samuel

Смежные вопросы