jQuery Datatables没有序列化超过1000条记录

时间:2017-05-16 15:15:48

标签: javascript c# jquery json asp.net-mvc

我有一个jQuery Datatable,它在客户端呈现1500行。我的用户检查行,然后发送所选行的ID并保存数据。

这对前1000行工作正常,但是任何时候都检查数据似乎没有被发布 - 在Dev Tools上,对MVC控制器的调用显示500内部服务器错误但是有一个断点方法它没有被击中?

如果我选择了1000行,则会触发断点并传递所有1000个ID。一旦我再添加1行进行检查,断点就不会被命中,但我在Dev Tools上看到500个内部服务器错误?

我的代码如下:

  $('#saveBtn').click(function () {
    var dataArr = [];
    var rows = $('tr.selected');
    var rowData = myTable.rows({ selected: true }).data();

    $.each($(rowData), function (key, value) {
      dataArr.push(value[0]); //Id is hidden in 1st column of the table
    });

    $.ajax({
      type: 'POST',
      url: '@Url.Action("SaveData", "MyController")',
      data: JSON.stringify(dataArr),
      contentType: 'application/json; charset=utf-8',
      success: function (data) {
        location.reload();
      },
      error: function () {
        sweetAlert("Error Occurred Saving");
        location.reload();
      },
    });
  });

我的MVC控制器非常简单

[HttpPost]
public ActionResult SaveData(List<int> Ids)
{
  //private method that just calls to the DB and sets a flag to say that Id was checked
  SaveData(Ids);

  return new HttpStatusCodeResult(HttpStatusCode.OK);  
}

我已经尝试将以下内容添加到我的MVC Web配置中,但是当我选择超过1000时,我仍然没有得到断点

<system.web.extensions>
  <scripting>
    <webServices>
      <jsonSerialization maxJsonLength="2147483644"/>
    </webServices>
  </scripting>
</system.web.extensions>

2 个答案:

答案 0 :(得分:1)

添加到配置中的appSettings元素会覆盖默认的最大限制,因为出于安全考虑,ASP.NET拒绝了包含超过1000个元素的请求。

https://msdn.microsoft.com/en-us/library/hh975440(v=vs.120).aspx

答案 1 :(得分:0)

解决问题的一种方法是在c#中指定json结果的最大长度。
示例:-

jsonResult.MaxJsonLength = 999999999;
return  jsonResult