流畅验证:如何显示客户端验证



我正在使用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>();
});

当我在 UI 上单击保存时,我将获得以下必填字段:名字、姓氏和地址。填写所有标记的必填字段并再次单击保存后,我将从服务器获得邮件地址和SSN是必需的(我选择的类型= 1(。

我需要做什么才能没有邮件地址验证? 是否可以在客户端提供 SSN 验证?

谢谢你的帮助

SSN 客户端:我怀疑您需要编写一个自定义客户端适配器。开箱即用的客户端支持非常有限,并且由于您的附加 When 子句,它可能不会触发。

当我必须构建自己的时,我以此为指导。

主地址服务器端:在调用服务器端验证之前,是否将其填充到模型中?还是空?由于没有定义明确的规则,我希望验证者会忽略它。有一个Null()规则可以应用于属性以确保其为 null。

最新更新