我编写了一个代码,用于传递用户通过单击复选框
选择的记录的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 是否为空
答案 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();