使用When的MVC和Fluent验证

时间:2018-11-07 21:01:58

标签: c# asp.net-mvc fluentvalidation

这是我所拥有的..

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; }
}

问题在于,针对姓氏的第一个规则正在客户端运行,但是在姓氏中输入了某些内容之后,针对名字的规则就无法触发。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

FluentValidation将与ASP.NET MVC的客户端验证一起使用,但不支持所有规则。例如,使用条件(使用When/Unless),自定义验证程序或对Must的调用定义的任何规则都不会在客户端运行。

查看更多信息here

答案 1 :(得分:0)

Fluent验证支持服务器端验证。您可以在客户端使用一些验证(如要求)。

如果要在客户端使用服务器端验证,则需要另一个库。您可以在客户端使用所有服务器端验证。检查github上的Form Helper库。它可以帮助您将服务器端验证转移到客户端。