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 に答える