Fel*_*lix 7 jquery-validate data-annotations unobtrusive-validation asp.net-mvc-4
我的Model类中有以下代码:
[Range(1, 100)]
public decimal Price { get; set; }
Run Code Online (Sandbox Code Playgroud)
最近升级(我假设)jquery.validate到1.11.0后,即使输入有效值,我也收到错误.如果我在web.config中关闭客户端验证 - 工作正常.所有其他属性(StringLength,Required)工作正常.生成的HTML如下(为清晰起见,添加了换行符):
<input class="text-box single-line" data-val="true"
data-val-number="The field Price must be a number."
data-val-range="The field Price must be between 1 and 100."
data-val-range-max="100" data-val-range-min="1"
data-val-required="The Price field is required." id="Price" name="Price"
type="text" value="" />
Run Code Online (Sandbox Code Playgroud)
我很确定它之前有效...除了jquery.validate中的错误之外别无所求.
小智 12
我们遇到了与jQuery.validate 1.11.0和Microsoft.jQuery.Unobtrusive.Validation 2.0.30116.0相同的问题.在验证库更新的某处,数字验证器坏了.
关于这个问题的GitHub问题跟踪器有一个未解决的问题:https://github.com/jzaefferer/jquery-validation/issues/626
引用该问题:
返回this.optional(元素)|| (value> = param [0] && value <= param [1]);
因为这行检查字符串,而不是数字.如果我的范围介于30和200之间,并且我想验证120,则字符串120小于字符串30.
这一行必须是这样的:
返回this.optional(元素)|| (Number(value)> = Number(param [0])&& Number(value)<= Number(param [1]));
我已经更改了jquery.validate.js的副本:
// http://docs.jquery.com/Plugins/Validation/Methods/range
range: function( value, element, param ) {
return this.optional(element) || (value >= param[0] && value <= param[1]) || (Number(value) >= Number(param[0]) && Number(value) <= Number(param[1]));
},
Run Code Online (Sandbox Code Playgroud)
现在,范围操作使用DataAnnotations按预期工作:
[Range(1, 100)]
public decimal Price { get; set; }
Run Code Online (Sandbox Code Playgroud)
Microsoft 发布了 microsoft.jQuery.Unobtrusive.Ajax 和 microsoft.jQuery.Unobtrusive.Validation 的更新(从版本“2.0.20710.0”到“2.0.30116.0”),修复了.live和验证问题
| 归档时间: |
|
| 查看次数: |
9589 次 |
| 最近记录: |