1

私はC#、MVC4 EF(データファースト)で作成されたプロジェクトを持っています。

[作成]ビューには、範囲を使用して許可された値を指定するためのいくつかの数値フィールドがあります。奇妙な理由で、私の番号は文字列として扱われ、検証が台無しになります。

たとえば、フィールド「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の人たちは、問題に対処するバグ修正プッシュを行ったようです。

        // 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 に答える