如何设置maxJsonLength属性?

时间:2016-09-20 17:17:29

标签: javascript jquery json asp.net-mvc

我有一个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);
    }

1 个答案:

答案 0 :(得分:1)

我从一些经验中学到的一件事是,似乎ASP.net MVC忽略了你在Web.config文件中放置的任何JSON Max值。我通常只做以下事情:

var JsonSerializer = new JavaScriptSerializer();
JsonSerializer.MaxJsonLength = Int32.MaxValue;

正如保罗·斯威兹(Paul Swetz)所说的那样,你可能会在管理MAX值方面找到更多的资源,但我很确定这将是最广为接受的答案。