尝试通过Ajax函数将ID列表传递给M-V-C Action

时间:2017-07-16 09:11:46

标签: json ajax asp.net-mvc

我正在尝试获取并存储JavaScript对象中所有选中复选框的ID。然后将此对象作为数据传递给我的JSON Action。我能够成功获取所有选中复选框的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);
}

1 个答案:

答案 0 :(得分:0)

正如评论中所建议的那样,因为您要保存数据POST is more appropriate than GET。另外,我认为使用JSON作为输入可以省去一些麻烦 - 你已经将它用作动作的输出格式。这意味着您的AJAX调用将如下所示:

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

当我说“通过使用JSON作为输入来节省自己的麻烦”时,我的意思是MVC中的模型绑定集合和复杂类型在将数据作为表单发送时会有点棘手 - 谷歌它你会看到有要注意的几个实现特性。根据我的经验,使用JSON在AJAX上发布的结构化数据的工作方式与您期望的更为相似。