我正在使用流利的验证,并且我已经将一些常见的电子邮件地址验证规则提取到自定义电子邮件验证器中,例如。
public class CustomeEmailValidator : AbstractValidator<string>
{
public CustomeEmailValidator (string fieldName)
{
RuleFor(m => m).NotEmpty().WithMessage(EmailEmptyMsg).WithName(fieldName);
RuleFor(m => m).EmailAddress().When(x => !string.IsNullOrEmpty(x)).WithMessage(EmailInvalidMsg).WithName(fieldName);
RuleFor(m => m).Must(x => x.Length <= 94).When(x => !string.IsNullOrEmpty(x)).WithMessage(EmailLengthMsg).WithName(fieldName);
}
}
然后在其他其他验证器中调用它
public class LoginModelValidator : AbstractValidator<LoginModel>
{
public LoginModelValidator()
{
RuleFor(m => m.Password).NotEmpty().WithMessage(EmptyPasswordMsg);
RuleFor(m => m.Email).SetValidator(new MediGapEmailValidator("Email"));
}
}
问题是返回错误有一个错误PropertyName of 'Email.Email' 或EmailAddress.Email 我需要它只是'Email' 或者只是一个不带点的属性名称。
我在调用 setValidator 时尝试过 OverridePropertyName
RuleFor(m => m.Email).SetValidator(new MediGapEmailValidator("Email")).OverridePropertyName("Email");
但这似乎不起作用。
有没有更好的方法来分解这个常见的验证码?