2

目立たない検証では、データ型が区別されません。MVC がすべての数値フィールドに追加する「数値」検証のみがあります。

これには、1.2345 が有効な整数であるという望ましくない影響があります。送信すると、MVC バインダーは値を解析できません。したがって、クライアント側のエラーを取得する代わりに、サーバーから取得します。

これを解決する最善の方法は何ですか?既存のソリューションはありますか?

4

1 に答える 1

5

わかりました、これが私がしたことです。

Int32用の独自のEditorTemplate(Views / Shared / EditorTemplates / Int32.cshtml)を作成しました。

@model int?           
@Html.TextBox("", Model.HasValue ? Model.Value.ToString() : "", new { data_val_integer = "Field must be an integer" }) 

検証アダプターを追加しました(これを$(document).readyで実行します:)

jQuery.validator.addMethod('integer',
    function (value, element, params) {
        return String.IsNullOrEmpty(value) || isInteger(value);
    });

jQuery.validator.unobtrusive.adapters.add("integer", [],
    function (options) {
        options.rules['integer'] = {};
        options.messages['integer'] = options.message;
    });

isIntegerこのように見えるJavascript関数を書きました

function isInteger(value) {
    return parseInt(value, 10) == value;
}

これで、整数フィールドは、小数点以下のドットを含むものを入力すると、「フィールドは整数でなければなりません」という素晴らしいメッセージを表示します。

より良い方法を聞いて喜ぶでしょう。

于 2011-06-24T13:14:47.523 に答える