我们将数据注释与jQuery.validate.unobtrusive插件结合用于我们的一个应用程序,并在今天遇到了一个独特的错误。MVC不显眼验证错误触发
查看模型属性
[Required(ErrorMessage = "You must specifiy a point value for the contest entry")]
[Min(5, ErrorMessage = "The point value must be at least 5 points for this contest")]
[DisplayName("Points required for entry:")]
public int RequiredPoints { get; set; }
查看
<li class="reqpoints">@Html.LabelFor(x => x.RequiredPoints) @Html.TextBoxFor(x => x.RequiredPoints)</li>
生成的HTML
<li class="reqpoints">
<label for="RequiredPoints"></label>
<input id="RequiredPoints" class="input-validation-error" type="text" value="10" name="RequiredPoints" data-val-required="You must specifiy a point value for the contest entry" data-val-range-min="5" data-val-range="The point value must be at least 5 points for this contest" data-val-number="The field Points required for entry: must be a number." data-val="true"></input>
</li>
这个伟大的工程,如果进入到文本框的数量是5-9或者如果第一位是5或更大。从10到49,100-499,1000-4999等任何数字都会被拒绝,并显示错误消息,它必须至少有5个点,就好像它正在截断最后一个数字一样。这不会回到服务器并返回,它是jQuery验证部分正在触发。有没有人看到一个问题使用Min()
这样的单个整数值?
我应该注意到,我们使用这个最小值为100的地方,并且没有任何问题(我知道)任何大于100的数字被拒绝。
相关版本:
- jQuery的 - 1.8.4
- jQuery.Validation - 1.12.0
- jQuery.validation.unobtrusive - 3.1.2
更新
如果我将Min
属性更改为至少有10个,一切都按预期工作。另外,如果我使用Range(5,99999)
数据属性,那么所有值似乎也按预期工作。看起来,jQuery 1.8.4和验证插件的最新版本的组合可能有一个数字最小验证的问题。
*最后你的意思是任何小于100的数字被拒绝?*不好意思阅读对不起 – TheNorthWes
@AdmiralAdama - 不,意思是它应该/预计工作。如果用户输入99,则拒绝。如果他们输入101,那么对于另一个视图模型中的特定字段(与此无关),它可以正常工作。在我遇到问题的情况下,它会拒绝任何不以5或更大开头的内容。我提到了最后一个例子,只是为了说明它在我们的应用程序的其他地方有效,而不是这一个实例? – Tommy
对不起,我误解了最后一个例子。 您是否尝试更改号码?听起来像jquery不正确地转换为整数。 [类似问题](http://stackoverflow.com/questions/15341564/jquery-validation-does-not-validate-numbers-properly) – TheNorthWes