gpt4 book ai didi

asp.net-mvc-4 - DataAnnotation Range 属性上的客户端验证行程

转载 作者:行者123 更新时间:2023-12-04 10:26:27 25 4
gpt4 key购买 nike

我的 Model 类中有以下代码:

    [Range(1, 100)]
public decimal Price { get; set; }

在最近将 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="" />

我很确定它以前工作过......除了jquery.validate中的错误之外想不出任何事情。

最佳答案

我们在 jQuery.validate 1.11.0 和 Microsoft.jQuery.Unobtrusive.Validation 2.0.30116.0 中遇到了同样的问题。在验证库更新的某个地方,数字验证器坏了。

GitHub 问题跟踪器上有一个与此问题相关的未解决问题:https://github.com/jzaefferer/jquery-validation/issues/626

在那个问题中引用:

return this.optional(element) || ( value >= param[0] && value <= param[1] );

Because this line checks strings, not numbers. If I have a range between 30 and 200, and I want to validate 120, then the string 120 is lesser then string 30.

This line must be something like this:

return this.optional(element) || ( 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]));
},

现在范围操作使用 DataAnnotations 按预期工作:
[Range(1, 100)]
public decimal Price { get; set; }

关于asp.net-mvc-4 - DataAnnotation Range 属性上的客户端验证行程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14889431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com