FluentValidation范围在Razor视图中引发InvalidOperationException

时间:2019-11-25 13:34:53

标签: c# razor asp.net-mvc-5 viewmodel fluentvalidation

我正在使用ASP MVC 5,并且使用FluentValidation还很新。

我正在尝试验证一个简单范围。

我有一堂这样的课

public int Property { get; set; }

这是我的验证

RuleFor(x => x.Property).NotEmpty()
                .GreaterThanOrEqualTo(1)
                .LessThanOrEqualTo(20);

当我想使用EditorFor在剃刀视图中使用它

@Html.EditorFor(x => x.FactorK)

它抛出一个InvalidOperationException

  

System.InvalidOperationException:中的验证类型的名称   离散客户端验证规则必须唯一。以下类型   验证已经不止一次了:范围

奇怪的是,当尝试仅使用一种方法(GreaterThanOrEqualLessThanOrEqual)时,它可以正常工作。

例如

RuleFor(x => x.Property).NotEmpty()
                .GreaterThanOrEqualTo(1);

这有效。

我在做什么错?

谢谢!

2 个答案:

答案 0 :(得分:1)

错误消息说明了错误原因,GreaterThanOrEqualTo和LessThanOrEqualTo均为“范围”验证类型。 尝试改用InclusiveBetween。

答案 1 :(得分:0)

在阅读文档时,我发现了InclusiveBetween validator

那是我的解决方法。

RuleFor(x => x.Property).NotEmpty()
    .InclusiveBetween(1, 20);