【问题标题】:MVC and Fluent Validation using a When使用 When 的 MVC 和 Fluent 验证
【发布时间】:2019-05-10 16:13:03
【问题描述】:

这就是我所拥有的......

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

问题在于,针对姓氏的第一条规则在客户端有效,但在姓氏中输入内容后,针对名字的规则没有触发。

谁能帮忙?

【问题讨论】:

  • .When() 不支持客户端。 (请参阅documentation - 请参阅标题为客户端验证的部分了解支持的规则)

标签: c# asp.net-mvc fluentvalidation


【解决方案1】:

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

查看更多信息here

【讨论】:

  • 在这种情况下,我会考虑使用一些客户端验证
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    相关资源
    最近更新 更多