FluentValidation:将值与其他字段进行比较

时间:2015-06-15 20:47:49

标签: asp.net-mvc-5 fluentvalidation

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

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

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

当视图试图渲染"长度"使用EditFor()字段显示此错误...

  

其他信息:不显眼的客户端中的验证类型名称   验证规则必须是唯一的。以下验证类型是   不止一次见过:范围

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

2 个答案:

答案 0 :(得分:5)

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

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

HTH

答案 1 :(得分:1)

根据documentation

  

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

     

* NOTNULL / NotEmpty
  *匹配(正则表达式)
  * InclusiveBetween(范围)
  *信用卡式
  *电子邮件
  * EqualTo(跨财产平等比较)
  *长度

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