1

モデルに bool プロパティがあります。ビューをレンダリングするとき、その値は false です。しかし、フォームを送信すると、TRUE の値がコントローラーに渡されます。カスタム js 関数を使用してフォームから値を取得し、コントローラー アクションに送信しています。チェックボックスから正しい値を取得する方法がわかりません。

私のモデルのプロパティ:

public bool RushOrderFlag { get; set; }

ビューのマークアップ:

@Html.EditorFor(model => model.RushOrderFlag)

レンダリングされた HTML:

<input class="chkbx" data-val="true" data-val-required="The Rush? field is required." id="RushOrderFlag" name="RushOrderFlag" type="checkbox" value="true">
<input name="RushOrderFlag" type="hidden" value="false">

私のJS関数

function GetFilterCriteria() {
var Criteria = {};
$('#frmCriteria input').each(function () {
    Criteria[this.name] = $("#" + this.name).val();
});
return Criteria;
};

コンソールに $('[name="RushOrderFlag"]').val() を入れても、チェックボックスのオンとオフをクリックすると、常に true が返されます。

私は何を間違っていますか?

4

3 に答える 3

0

試す

function GetFilterCriteria() {
var Criteria = {};
$('#frmCriteria input').each(function () {
    Criteria[this.name] = false;
    if ($("#" + this.name).is(':checked'))
        Criteria[this.name] = true;

});
return Criteria;
};
于 2013-02-15T03:55:20.383 に答える
0

ヒントをありがとう...最終的には、かみそりがチェックボックス用に2つの入力コントロールを作成する方法のために、もう少し複雑にする必要がありました. だからここに私がしなければならなかったことがあります:

function GetFilterCriteria() {
var Criteria = {};
$('#frmCriteria input').each(function () {
    if ($(this).attr('type') != 'hidden') {
        if ($(this).attr('type') == 'checkbox') {
            Criteria[this.name] = this.checked;
        } else {
            Criteria[this.name] = $("#" + this.name).val();
        }
    }
});
return Criteria;
};

非表示の入力が必要な場合、これはそれをスキップするので、私はそれが好きではありません。しかし、今のところそれは機能します。こんなに難しいとは信じがたいです:(

于 2013-02-15T15:32:56.237 に答える