“字符串的长度超过了在 maxJsonLength 属性上设置的值”时尝试将部分视图转换为字符串

本文关键字:字符串 视图 转换 设置 过了 maxJsonLength 属性 | 更新日期: 2023-09-27 18:31:57

当有效负载超过 MaxJsonLength 属性时,尝试将 MVC 部分视图转换为字符串时,我收到错误"Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property."

在这种情况下,如何设置 MaxJsonLength 属性? 根据这篇文章,我尝试在 web.config 中设置 <jsonSerialization maxJsonLength="2147483644"/> 属性,但这没有任何效果。我并不完全是从这里开始寻找一些指导。

下面viewResult.View.Render(viewContext, sw);行上的代码错误:

    protected string ConvertViewToString(string viewName, object model)
    {
        string razorView = string.Empty;
        if (string.IsNullOrWhiteSpace(viewName)) return razorView;
        if (model != null && ViewData != null)
        {
            ViewData.Model = model;
        }
        if (ControllerContext != null)
        {
            ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
            if (viewResult != null)
            {
                using (StringWriter sw = new StringWriter())
                {
                    ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
                    viewResult.View.Render(viewContext, sw);
                    viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
                    razorView = sw.GetStringBuilder().ToString();
                }
            }
        }
        return razorView;
    }

“字符串的长度超过了在 maxJsonLength 属性上设置的值”时尝试将部分视图转换为字符串

造成这种情况的根本原因是由于试图在部分视图中将太大的结果集加载到 Telerik Kendo 网格中 - 剑道网格正在抛出例外,这就是它在viewResult.View.Render(viewContext, sw)行上被捕获的原因。 解决方案是将结果集分解为更小的可管理块。