2

我有一个 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 JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了 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 工作。

4

1 回答 1

-1

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

    <configuration> 
   <system.web.extensions>
       <scripting>
           <webServices>
               <jsonSerialization maxJsonLength="50000000"/>
           </webServices>
       </scripting>
   </system.web.extensions>
</configuration> 
于 2014-08-06T20:35:20.010 回答