我有一个JsonResult返回29833条记录,包含CustomerID和CustomerName。我试图将其加载到自动完成,但我不断收到此错误。
使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过maxJsonLength属性上设置的值。
我做了一些关于这个主题的讨论并发现了这个链接here
所以我读了它,所提供的答案对我来说没有用,然后下一个建议看起来很有希望,直到我更多地看了代码并得出结论它对我不起作用因为我是使用JQuery Ajax获取JsonResult。现在我不知道该怎么做,这是我正在使用的JQuery
function LoadCustomers() {
$.ajax({
type: "GET",
url: "/Test/GetAllCustomers",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
ShowCustomers(data);
}
});
}
function ShowCustomers(custdata) {
$("#acCustomers").kendoAutoComplete({
dataSource: custdata,
filter: "startswith",
placeholder: "Select Customer...",
dataTextField: "CustomerName"
});
}
我甚至尝试过填充网格,但无济于事。任何关于如何让我按照我的方式正常工作的想法?我认为作为最后的手段,我将不得不改变我的存储过程并在每个keyup事件中传递字符,我不知道这是不是一个好主意或者可能是,我不知道。无论哪种方式,我肯定可以使用一些帮助或方向
修改 根据提供的链接,这不是重复的原因是因为我不在服务器端,我在客户端工作。
编辑2
这是我的JsonResult
public JsonResult GetAllCustomers(string name)
{
PGDAL dal = new PGDAL();
List<Customer> lst = dal.GetAllCustomers();
return Json(lst, JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:1)
我从一些经验中学到的一件事是,似乎ASP.net MVC忽略了你在Web.config文件中放置的任何JSON Max值。我通常只做以下事情:
var JsonSerializer = new JavaScriptSerializer();
JsonSerializer.MaxJsonLength = Int32.MaxValue;
正如保罗·斯威兹(Paul Swetz)所说的那样,你可能会在管理MAX值方面找到更多的资源,但我很确定这将是最广为接受的答案。