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

Jus*_*pMe 3 fluentvalidation asp.net-mvc-5

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

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

RuleFor(x => x.Length).LessThanOrEqualTo(y => y.LengthMax)
   .GreaterThanOrEqualTo(z => z.LengthMin);
Run Code Online (Sandbox Code Playgroud)

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

附加信息:不打扰的客户端验证规则中的验证类型名称必须是唯一的。多次查看以下验证类型:范围

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

Sli*_*sim 7

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

RuleFor(m=> m.Length).Must((model, field) => field >= model.LengthMin && field <= model.LengthMax);
Run Code Online (Sandbox Code Playgroud)

高温超导


Yan*_*eus 3

根据文档

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

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

关于在SO上滚动您自己的流畅属性验证器,可以找到更多信息。