C# MVC和Fluent验证使用When

C# MVC和Fluent验证使用When,c#,asp.net-mvc,fluentvalidation,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.Fi

这是我的

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; }
}
公共类PersonalDetailValidator:AbstractValidator
{
公共PersonalDetailValidator()
{
RuleFor(x=>x.LastName).NotNull().WithMessage(“需要人员的姓氏”);
RuleFor(x=>x.FirstName).NotEmpty().When(x=>string.IsNullOrWhiteSpace(x.LastName)==false).WithMessage(“需要个人的名字”);
}
}
[验证器(类型(PersonalDetailValidator))]
公共类个人详细信息
{
[显示(Name=“First Name”)]
公共字符串名{get;set;}
[显示(Name=“Last Name”)]
公共字符串LastName{get;set;}
}
问题是,针对姓氏的第一条规则在客户端起作用,但在姓氏中输入某些内容后,针对姓氏的规则不会触发


有人能帮忙吗?

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


请参阅更多信息

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


如果您想在客户端使用服务器端验证,则需要另一个库。您可以在客户端使用所有服务器端验证。检查github上的表单帮助程序库。它可以帮助您将服务器端验证传输到客户端。

.When()
不受客户端支持。(请参阅Client Sub验证部分,以支持规则),在这种情况下,我会考虑使用一些客户端验证。