【问题标题】:Trying to pass list of ids to the M-V-C Action through Ajax Function试图通过 Ajax 函数将 id 列表传递给 M-V-C 操作
【发布时间】:2017-07-16 09:11:46
【问题描述】:

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

$("#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);
}

【问题讨论】:

  • 添加traditional: true, ajax 选项。
  • 但是你方法的名字暗示了它保存数据,所以它应该是 POST 绝对不是 GET。
  • @StephenMuecke 工作!!

标签: json ajax asp.net-mvc


【解决方案1】:

正如 cmets 中所建议的,因为您正在保存数据 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 发布的结构化数据的工作方式与您期望的差不多。

【讨论】:

    猜你喜欢
    • 2018-09-30
    • 2021-06-16
    • 2022-01-01
    • 2017-04-14
    • 2012-03-07
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多