使用 When 的 MVC 和 Fluent 验证
MVC and Fluent Validation using a When
这是我的..
public class PersonalDetailValidator : AbstractValidator<PersonalDetail>
{
public PersonalDetailValidator()
{
RuleFor(x => x.LastName).NotNull().WithMessage("Person's Last Name is required");
RuleFor(x => x.FirstName).NotEmpty().When(x => string.IsNullOrWhiteSpace(x.LastName) == false).WithMessage("Person's First Name is required");
}
}
[Validator(typeof(PersonalDetailValidator))]
public class PersonalDetail
{
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
public string LastName { get; set; }
}
问题是针对姓氏的第一条规则在客户端有效,但在向姓氏输入内容后,针对名字的规则未触发。
有人可以帮忙吗?
FluentValidation 将与 ASP.NET MVC 的客户端验证一起使用,但并非所有规则都受支持。例如,使用条件(使用 When/Unless
)、自定义验证器或对 Must
的调用定义的任何规则都不会在客户端 运行。
查看更多信息here
Fluent 验证支持 server-side 验证。您可以在 client-side 上使用一些验证(如需要)。
如果你想在 client-side 上使用 server-side 验证,你需要另一个库。您可以在 client-side 上使用所有 server-side 验证。检查 github 上的表单助手库。它可以帮助您将 server-side 验证转移到 client-side.
这是我的..
public class PersonalDetailValidator : AbstractValidator<PersonalDetail>
{
public PersonalDetailValidator()
{
RuleFor(x => x.LastName).NotNull().WithMessage("Person's Last Name is required");
RuleFor(x => x.FirstName).NotEmpty().When(x => string.IsNullOrWhiteSpace(x.LastName) == false).WithMessage("Person's First Name is required");
}
}
[Validator(typeof(PersonalDetailValidator))]
public class PersonalDetail
{
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
public string LastName { get; set; }
}
问题是针对姓氏的第一条规则在客户端有效,但在向姓氏输入内容后,针对名字的规则未触发。
有人可以帮忙吗?
FluentValidation 将与 ASP.NET MVC 的客户端验证一起使用,但并非所有规则都受支持。例如,使用条件(使用 When/Unless
)、自定义验证器或对 Must
的调用定义的任何规则都不会在客户端 运行。
查看更多信息here
Fluent 验证支持 server-side 验证。您可以在 client-side 上使用一些验证(如需要)。
如果你想在 client-side 上使用 server-side 验证,你需要另一个库。您可以在 client-side 上使用所有 server-side 验证。检查 github 上的表单助手库。它可以帮助您将 server-side 验证转移到 client-side.