C# 剑道MVC网格创建操作“;最大长度超过;

C# 剑道MVC网格创建操作“;最大长度超过;,c#,json,asp.net-mvc,kendo-asp.net-mvc,C#,Json,Asp.net Mvc,Kendo Asp.net Mvc,我使用的是ASP.NET MVC5,我发布的视图模型格式如下: { 行:{ ... 文档ID:。。。 文件名:。。。 FileContent:..//非常长的base64字符串 ... } }当您从服务器端获取大量记录时,您将面临此错误 因此,您需要通过在数据库中分页来限制记录。 您将从KendoUIGrid获得当前偏移量和页面大小,并使用该页面偏移量和页面大小可以在数据库中设置分页 [HttpPost] public ActionResult Grid_Create([DataSour

我使用的是ASP.NET MVC5,我发布的视图模型格式如下:

{
行:{
...
文档ID:。。。
文件名:。。。
FileContent:..//非常长的base64字符串
...
}

}
当您从服务器端获取大量记录时,您将面临此错误

因此,您需要通过在数据库中分页来限制记录。 您将从KendoUIGrid获得当前偏移量和页面大小,并使用该页面偏移量和页面大小可以在数据库中设置分页

 [HttpPost]

 public ActionResult Grid_Create([DataSourceRequest]DataSourceRequest request, MyViewModel row)
 {
   try
   {
     var dataset = dbsource.Skip(request.Page * request.PageSize).Take(request.PageSize).ToList();
   }
   catch (Exception ex)
   {
     ModelState.AddModelError("ERROR", ex.Message);
   }
   return Json(dataset);
 }

dbsource是您的实体模型

好的,在Google上浏览了半天之后,我终于来到这里:

我仍然不知道它为什么能工作(以及为什么ASP.NET MVC5的默认模型绑定器不能工作),但是在使用这个JQuery扩展并调用blog演示后,JSON对象成功绑定到控制器参数

希望能有帮助

剑道MVC网格创建操作“maxJsonLength EXCEND”

您从控制器传回的数据非常大,正如我看到的,您也在web配置中设置了设置,但这对我不起作用,我实际做的不是让Kendo将我的对象转换为Json,而是我自己转换(我可以指定Json的最大长度),然后传递数据。这是代码

创建一个C#扩展,将对象转换为Json

public static class JsonFormatter
{        
    public static string KendoJsonResult(this IEnumerable enumerable, DataSourceRequest request)
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        serializer.MaxJsonLength = Int32.MaxValue; //Here change the default max size to Maximum possible value, that is Int32.MaxValue
        var jsonData = serializer.Serialize(enumerable.ToDataSourceResult(request));          

        return jsonData;           
    }

}
然后,您只需更改代码即可将数据转换为json,如下所示

return Content(dataset.KendoJsonResult(request), "application/json");

但仍然要确保序列化为Json时的数据不会太大,甚至不会溢出此最大值。因为当用户甚至无法查看所有数据行时,发送1000行数据是没有用的。

谢谢,但我认为您误解了问题所在,这不是读取操作,而是创建操作,我确实在ASP.NET模型绑定步骤中将一个大JSON对象(我的eg中的行)发布到控制器(尝试将JSON对象映射到MyViewModel),它失败了。该程序甚至没有执行到try block中。谢谢。您可能会在这里看到我在OPSo中编辑的部分,因为我的回答建议您需要覆盖默认的序列化和反序列化最大大小,因此,如果它与post方法相关,则您必须编写一个自定义模型绑定器,当您的create方法接收到一些数据时,该绑定器会出现a、 在这个模型绑定器中,您可以编写您的逻辑以无误地反序列化,然后发送给控制器。我很高兴我在我的博客上发布的解决方案对您有效。