我正在使用FluentValidation库,并试图找出原因:

this.RuleFor(m => m.Quantity).GreaterThanOrEqualTo(10);


呈现此:

<input data-val-range-min="10" id="Quantity" name="Quantity" type="text" value="10"">


但是相同方法的重载版本:

this.RuleFor(m => m.Quantity).GreaterThanOrEqualTo(m => m.QuantityMin);


呈现此内容(data-val-range-min为空):

<input data-val-range-min="" id="Quantity" name="Quantity" type="text" value="10"">


我进行了一点测试,然后将代码更改为如下所示:

this.RuleFor(m => m.Quantity).GreaterThanOrEqualTo(m => this.GetMin(m));

function GetMin(ConfigurationView view)
{
    return view.QuantityMin;
}


并在函数中设置断点,当我调试时它不会在那里停止。它根本不会去功能。这是否表示Expression参数无法编译,这就是HTML属性为空的原因?又为什么呢?

我知道LessThanOrEqualTo和GraterThanOrEqualTo不支持客户端验证-或至少它们不支持客户端验证。我发现的所有文章都已经有几年历史了,也许现在不再如此了?无论如何,我并不真正在乎客户端验证,而只是在data属性上。而且我想知道为什么同一方法的一个版本无法在HTML中呈现值的原因。

谢谢。

最佳答案

我联系了FluentValidation的作者,基本上没有实现此功能,因此很难实现,因此它很可靠。我相信有可能,但我理解作者的观点不这样做:
https://github.com/JeremySkinner/FluentValidation/issues/428

关于c# - 流利验证重载(Less)GreaterThanOrEqualTo方法不会呈现相同的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42915085/

10-13 07:01