1

我有一个用 C#、MVC4 EF(数据优先)制作的项目。

在我的创建视图中,我有许多数字字段,我想使用 Range 为其指定允许的值。出于某种奇怪的原因,我的数字被视为字符串,这会破坏验证。

让我们以字段“LengthInch”为例:在数据库中它是一个 int。

在我看来,我有代码:

@Html.EditorFor(model => model.LengthInch)
@Html.ValidationMessageFor(model => model.LengthInch)

最后在我的元数据文件(用于模型)中,我有代码:

[Range(0, 11, ErrorMessage = "Value for {0} must be between {1} and {2}.")]
public Nullable<int> LengthInch { get; set; }

如果我在字段中输入 0、1、10 或 11,一切都很好,但如果我输入 2,我会收到一个验证错误,提示“LengthInch 的值必须介于 0 和 11 之间”。3 到 9 也是如此。因此,出于某种原因,这些数字似乎被视为字符串。任何人有任何想法?

4

1 回答 1

0

马尔科姆关于“新”项目工作的观点为我指明了正确的方向,谢谢!似乎 jquery.validate 家伙做了一个 bug 修复推送来解决这个问题

        // convert the value to a number for number inputs, and for text for backwards compability
        // allows type="date" and others to be compared as strings
        if ( /min|max/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
            value = Number(value);
        }

        if ( value ) {
            rules[method] = value;
        } else if ( type === method && type !== 'range' ) {
            // exception: the jquery validate 'range' method
            // does not test for the html5 'range' type
            rules[method] = true;
        }

一旦我对 jqueryvalidation-1.11.1 进行了 nuget 更新,它就解决了这个问题,欢迎来到 JS 包地狱!

于 2013-03-27T01:09:09.460 回答