我有一个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>
答案 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