Fluent Validation Overload (Less)GreaterThan或EqualTo 方法不呈现相同的结果



我正在使用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;
}

并在函数内部设置断点,当我调试时它不会停在那里。它根本不会转到函数。这是否意味着表达式参数无法编译,这就是 HTML 属性为空的原因?为什么呢?

我知道 LessThanOrEqualTo 和 GraterThanOrEqualTo 不支持客户端验证 - 或者至少它们不支持。我找到的所有文章都已经有几年的历史了,也许现在已经不是这样了?无论如何,我并不真正关心客户端验证,只关心数据属性。我想知道为什么同一方法的一个版本不会在 HTML 中呈现值的原因。

谢谢。

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

最新更新