如何接受通过ajax传递的值

时间:2012-08-17 09:10:16

标签: asp.net-mvc-3 jquery

我编写了一个代码,用于传递用户通过单击复选框

选择的记录的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 是否为空

1 个答案:

答案 0 :(得分: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" />
...

我假设您的ID是数字的,因为您试图将它们绑定到控制器操作中的List<int>。除了这是无效的HTML。 ID不能以数字开头。因此,一种可能性是在复选框上使用HTML5 data-*属性来存储此额外元数据:

<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();