Я использую FluentValidation
public class AddressModel{
public string Street{get; set;}
public string City{get; set;}
public string State{get; set;}
public string Zip{get; set;}
public string Country{get; set;}
}
public class PersonModel{
public string FirstName {get; set;}
public string LastName {get; set;}
public string SSN {get; set;}
public AddressModel Address{get; set;}
public AddressModel MailingAddress{get; set;}
public int Type {get; set;}
}
public class AddressValidator : AbstractValidator<AddressModel>
{
public AddressValidator()
{
RuleFor(p=>p.Street).NotEmpty().WithMessage("Street is required");
RuleFor(p=>p.City).NotEmpty().WithMessage("City is required");
RuleFor(p=>p.Country).NotEmpty().WithMessage("Country is required");
RuleFor(p=>p.State).NotEmpty().WithMessage("State is required");
RuleFor(p=>p.Zip).NotEmpty().WithMessage("Zip code is required")
}
}
public class PersonValidator : AbstractValidator<PersonModel>
{
public PersonValidator()
{
RuleFor(p=>p.FirstName).NotEmpty().WithMessage("First name is required");
RuleFor(p=>p.LastName).NotEmpty().WithMessage("Last name is required");
RuleFor(p=>p.Address).SetValidator(new AddressValidator());
RuleFor(p=>p.SSN).NotEmpty().WithMessage("SSN is required").When(p=>p.Type ==1);
}
}
// Запуск
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
.AddFluentValidation(fv =>
{
fv.RegisterValidatorsFromAssemblyContaining<Startup>();
});
Когда я нажимаю Сохранить в пользовательском интерфейсе, я получу следующие обязательные поля: FirstName, LastName и Address. После того как я заполню все отмеченные обязательные поля и снова нажму кнопку Сохранить, я получу от сервера, что требуется MailingAddress и SSN (я выбрал тип = 1).
Что мне нужно сделать, чтобы у меня не было проверки дляЭлектронная почта? Можно ли сделать проверку SSN доступной на стороне клиента?
Спасибо за помощь