Здравствуйте!
У меня есть модель изменения данных, которая состоит из свойств: Email, Password и Phone. Мне нужно, что бы Phone валидировался только тогда, когда Email и Password пустые. Вот код валидатора:
public RequestCodeValidator()
{
RuleFor(x => x.Id);
RuleFor(x => x.Phone)
.NotEmpty()
.NotNull()
.When(model => string.IsNullOrEmpty(model.Email) && string.IsNullOrEmpty(model.Password))
.Must(phone => long.TryParse(phone, out long numberPhone) &&
phone.TrimStart('0').Length == 9 || phone.Length == 12);
RuleFor(x => x.Email)
.NotEmpty()
.NotNull()
.EmailAddress()
.MaximumLength(255)
.When(model => string.IsNullOrEmpty(model.Email) && string.IsNullOrEmpty(model.Password));
RuleFor(x => x.Password)
.NotEmpty()
.NotNull()
.Length(4, 31)
.When(model => string.IsNullOrEmpty(model.Email) && string.IsNullOrEmpty(model.Password));
RuleFor(x => x.Code);
}
При валидации телефона, я думал, что .Must не будет срабатывать, когда я меняю, допустим, пароль, но он срабатывает и выкидывает мне ошибку. Как это можно решить?