Json 试图通过Ajax函数将ID列表传递给M-V-C操作

Json 试图通过Ajax函数将ID列表传递给M-V-C操作,json,ajax,asp.net-mvc,Json,Ajax,Asp.net Mvc,我试图获取并存储JavaScript对象中所有选中复选框的ID。然后将此对象作为数据传递给我的JSON操作。我能够成功地获取所有选中复选框的ID,但是当我将此对象传递给我的操作时,我得到的是null。以下是我的代码: $("#btnSave").on('click', function () { var selected = []; $('input:checked').each(function () { selected.push($(this).attr('i

我试图获取并存储JavaScript对象中所有选中复选框的ID。然后将此对象作为数据传递给我的
JSON
操作。我能够成功地获取所有选中复选框的ID,但是当我将此对象传递给我的操作时,我得到的是null。以下是我的代码:

$("#btnSave").on('click', function () {

   var selected = [];

   $('input:checked').each(function () {
       selected.push($(this).attr('id'));
   });

   $.ajax({
       url: '@Url.Action("SaveRecords", "Users")',
       data: { ids: selected },
       cache: false,
       type: "GET",
       success: function (data) {}
   });

});
我的行动:

public JsonResult SaveRecords(List<int> ids) //Here I'm getting Null.
{
    return Json(true, JsonRequestBehavior.AllowGet);
}
publicjsonresult SaveRecords(列表id)//这里我得到了Null。
{
返回Json(true,JsonRequestBehavior.AllowGet);
}

如注释所示,因为您正在保存数据。另外,我认为使用JSON作为输入可以避免一些麻烦——您已经在使用它作为操作的输出格式了。这意味着您的AJAX调用将如下所示:

$.ajax({
   type: 'POST',
   url: '@Url.Action("SaveRecords", "Users")',
   contentType: 'application/json',
   data: JSON.stringify(selected),
   success: function (data) { /* ... */ }
});

当我说“通过使用JSON作为输入来避免麻烦”时,我的意思是MVC中的模型绑定集合和复杂类型在以表单形式发送数据时可能会有点棘手-google it,您将看到有几个实现特征需要注意。根据我的经验,对使用AJAX发布的结构化数据使用JSON的效果与您预期的非常相似。

添加
traditional:true,
AJAX选项。但是您方法的名称表明它在保存数据,因此它应该是一篇文章,而不是一篇文章。@StephenMuecke成功了!!