我正在使用telerik网格显示来自sql db的数据...当我显示超过3500行时,它返回:使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过maxJsonLength属性上设置的值。
互联网上的所有地方和Telerik Troubleshooting manual也写道,原因是编辑web.config。它对我没有帮助......我尝试了这样的返回数据:
JavaScriptSerializer serializer = new JavaScriptSerializer { MaxJsonLength = 536870912, RecursionLimit = 100 };
return new ContentResult()
{
Content = serializer.Serialize(data),
ContentEncoding = Encoding.UTF8
};
当我将数据作为ContentResult返回时,过滤和排序将停止工作。
我也在尝试这个解决方案:http://anyrest.wordpress.com/2011/09/27/large-json-result-for-teleriks-mvc-grid/这对我没有帮助......
以下是我的控制器代码:
[GridAction, POST("GridData")]
public ActionResult _Index()
{
var data = GetExclusionsDataCollection();
return View(new GridModel { Data = data });
}
谢谢, 大卫
答案 0 :(得分:1)
我联系了Telerik的支持,现在我可以分享我的问题的原因......
Telerik Code库有link。重要的是在global.asax.cs中添加一行。他们解决方案的这一部分并不是我见过的大多数其他解决方案......
DI.Current.Register<IGridActionResultFactory>(() => new MyCustomGridActionResultFactory());
此行会导致ovveride默认的Telerik功能并激活您的自定义Json结果...
-David
答案 1 :(得分:0)
尝试在web.config中增加maxRequestLength
<system.web>
<httpRuntime requestValidationMode="2.0" maxRequestLength="VALUE" />
</system.web>
其中Value将设置为int.maxvalue或int64.maxvalue