У меня есть несколько полей формы, таких как номера телефонов и почтовые индексы, которые можно оставить пустыми. Однако, когда они заполняются, я хочу, чтобы они соответствовали строгим правилам форматирования.Fluent Validation - условная проверка потенциально нулевого значения
Ищу использовать Fluent Validation для решения этой задачи, но я до сих пор найти все, что может сделать следующее:
RuleFor(x => x.PhoneNumber)
.Matches(@"^\d{3}-\d{3}-\d{4}$")
.When(x => x.PhoneNumber.Length != 0)
.WithMessage("Phone number must be a valid 10-digit phone number with dashes, in the form of “123-456-7890”")
.Length(12, 12).When(x => x.PhoneNumber.Length >= 1).WithMessage("Phone number must be in the form of “123-456-7890”");
Сейчас оба эти кинуть «ссылка на объект не указывает на экземпляр ошибки ".
Имею ли я смысл, или это даже невозможно с FluentValidation?
Ваш '. Length() 'и связанные' .When() 'даже не нужны - его уже покрывает регулярное выражение, которое требует 12 символов. И я думаю, что '.When()', связанный с '.Matches()', также не требуется, поскольку регулярное выражение не вычисляется, если значение пусто. –