0

チェックボックスをクリックしてユーザーが選択したレコードのIDを渡すコードを作成しました

bttnのクリックで送信すると、次のコードが呼び出されます

  $("#button").click(function () {

 var selected = $(".a:checked").map(function() {
    return this.id;
}).get();

var urlDistricts = '@Url.Action("selectedId")';
$.ajax({
    type: "POST",

    url: urlDistricts,
    data: { listofid:selected },
    success: function () {

    }
});
});

これをキャッチするために、コントローラーに次のように書きました

    [HttpPost]
    public ActionResult selectedId(List<int> listofid)
    {
        return View();
    }

しかし、listofidはnullをカミングしています

4

1 に答える 1

2

traditional: trueパラメータを設定します。

$.ajax({
    type: "POST",
    url: urlDistricts,
    traditional: true,
    data: { listofid: selected },
    success: function (result) {

    }
});

また、コードに何か問題があるようです。選択したチェックボックスの ID を取得しています。したがって、マークアップは次のようになると想定できます。

<input class="a" type="checkbox" id="1" name="id1" />
<input class="a" type="checkbox" id="2" name="id2" />
<input class="a" type="checkbox" id="3" name="id3" />
...

List<int>コントローラーアクションでIDをバインドしようとしているため、IDは数値であると想定しています。ただし、これは無効な HTML です。ID を数字で始めることはできません。したがってdata-*、チェックボックスで HTML5 属性を使用して、この追加のメタデータを保存することが 1 つの可能性です。

<input class="a" type="checkbox" data-id="1" name="id1" />
<input class="a" type="checkbox" data-id="2" name="id2" />
<input class="a" type="checkbox" data-id="3" name="id3" />
...

その後:

var selected = $(".a:checked").map(function() {
    return $(this).data('id');
}).get();
于 2012-08-17T09:17:20.727 に答える