【问题标题】:FluentValidation : Compare value with other fieldsFluentValidation : 将值与其他字段进行比较
【发布时间】:2015-06-15 20:47:48
【问题描述】:

有人提到我在 MVC5 C# ASP.NET 中使用 FluentValidation。我正在尝试将一个字段与其他两个字段进行比较,但出现错误。

我自定义的“AbstractValidator”中的代码如下:

RuleFor(x => x.Length).LessThanOrEqualTo(y => y.LengthMax)
   .GreaterThanOrEqualTo(z => z.LengthMin);

当视图尝试使用EditFor() 呈现“长度”字段的控件时,会显示此错误...

附加信息:不显眼的客户端中的验证类型名称 验证规则必须是唯一的。以下验证类型是 不止一次看到:范围

如何将一个值与同一模型的其他两个值进行比较。

【问题讨论】:

    标签: asp.net-mvc-5 fluentvalidation


    【解决方案1】:

    如果您不介意丢失 javascript 验证,可以使用 FluentValidation 的 Must 扩展来完成

    RuleFor(m=> m.Length).Must((model, field) => field >= model.LengthMin && field <= model.LengthMax);
    

    HTH

    【讨论】:

    • 我使用它的原因是用于 JavaScript 验证。可能我可以自己手动添加 JavaScript 验证并使用 Must。我会调查这个选项,谢谢。
    【解决方案2】:

    根据documentation

    请注意,FluentValidation 也适用于 ASP.NET MVC 的 客户端验证,但并非所有规则都受支持。例如, 使用条件(使用何时/除非)定义的任何规则,自定义 验证器或对 Must 的调用将不会在客户端运行。这 客户端支持以下验证器:

    *NotNull/NotEmpty
    *匹配(正则表达式)
    *InclusiveBetween(范围)
    *信用卡
    *电子邮件
    *EqualTo(跨属性相等比较)
    *长度

    有更多关于在SO 上滚动您自己的流利属性验证器的信息。

    【讨论】:

    • 我一直在查看文档,但希望有人已经做过类似的事情并可以提供示例。谢谢,我会看一下文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-25
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多