【问题标题】:Error during serialization or deserialization using the JSON JavaScriptSerializer in KendoUI在 KendoUI 中使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错
【发布时间】:2013-09-09 10:59:43
【问题描述】:

我有一个 KendoUI 网格,它将图像呈现为模板的一部分,如下所示:

@(Html.Kendo().Grid(Model.UnitDetails)
      .Name("grid")
      .DataSource(ds => ds
                            .Ajax()
                            .Read(read => read.Action("Get", "FleetMonitor"))
                            .AutoSync(true)
                            .PageSize(3)
      )
      .HtmlAttributes(new { style = "height:auto;" })
      .Columns(columns =>
          {
              columns.Template(p => { }).ClientTemplate(" ").Width(270);
              columns.Template(p => { }).ClientTemplate(" ").Width(250);
              columns.Template(p => { }).ClientTemplate(" ").Width(150);
              columns.Template(p => { }).ClientTemplate(" ").Width(550);
              columns.Template(p => { }).ClientTemplate(" ").Width(25);
              columns.Template(p => { }).ClientTemplate(" ").Width(100);
          })
      .ClientRowTemplate(Html.Partial("_ClientRowTemplate", Model).ToHtmlString())
      .Pageable()
      .Sortable())

但是,每当我加载页面时,网格就会崩溃,并出现以下异常:

使用 JSON 进行序列化或反序列化时出错 JavaScript 序列化器。字符串长度超过设置的值 在 maxJsonLength 属性上。

所以,我用谷歌搜索它,它把我带到了 SO,它对问题提出了建议(我的控制器):

public ActionResult Get([DataSourceRequest] DataSourceRequest request, string tag)
{
    UnitContract[] listOfUnitsFromService = UnitClient.GetListOfUnits(false, tag, true);
    var cookie = Request.Cookies.Get("Company.Name.UnitTagCookie");

    Model = new FleetMonitorModel
                {
                    UnitDetails = GenerateUnitDetails(listOfUnitsFromService.ToList()),
                    Tags = GetAvailableTags(),
                    Refresh = true,
                    SelectedTag = GetTagFromCookie(cookie)
                };

    var jsonResult = Json(Model.UnitDetails.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
    jsonResult.MaxJsonLength = Int32.MaxValue;

    return jsonResult;
}

那么,任何人都可以对此提供一些见解以及可能的解决方法吗? :) 我应该提到,如果我从这里更改网格初始化部分,它可以工作并呈现模板:

@(Html.Kendo().Grid(Model.UnitDetails)
...

到这里:

@(Html.Kendo().Grid<UnitDetailsModel>()

但是,这样做会破坏我网格中的一些其他功能。更加具体;由于某种原因,它会阻止我的 SignalR-js 工作。

【问题讨论】:

    标签: asp.net-mvc json kendo-ui signalr kendo-grid


    【解决方案1】:

    尝试将此设置放在项目的 web.config 中:

        <configuration> 
       <system.web.extensions>
           <scripting>
               <webServices>
                   <jsonSerialization maxJsonLength="50000000"/>
               </webServices>
           </scripting>
       </system.web.extensions>
    </configuration> 
    

    【讨论】:

      猜你喜欢
      • 2021-09-02
      • 2015-01-11
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2013-12-07
      • 1970-01-01
      相关资源
      最近更新 更多