【问题标题】:Kendo UI Grid DataSourceRequest and DataSourceRequestModelBinder in MVC6MVC6 中的 Kendo UI 网格 DataSourceRequest 和 DataSourceRequestModelBinder
【发布时间】:2016-02-09 00:00:05
【问题描述】:

DataSourceRequestModelBinder 运行并尝试在网格发送的参数上创建DataSourceRequest 时,似乎出现了问题。这是MVC 6Kendo.Mvc v2016.1.112

在 cshtml 方面,Kendo DataSource 如下所示:

var myDS = new kendo.data.DataSource({
    serverPaging: true,
    serverSorting: true,
    pageSize: 3,
    transport: {
        read: {
            url: "/api/kendotest/GetKendoGridData"
        }
    },
    schema: {
        data: "Data",
        total: "Total"
    }
});

控制器看起来像这样:

[Route("GetKendoGridData")]
public DataSourceResult GetKendoGridData([DataSourceRequest]DataSourceRequest request)
{
    //create some sample objects
    var ids = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
    var data = ids.Select(i => new MyModel
    {
        Id = i
    });

    return data.AsQueryable().ToDataSourceResult(request);
}

初始读取工作正常,分页工作正常,但服务器端排序不行。我认为这是因为剑道网格发送排序参数的方式导致DataSourceRequestModelBinder 无法解析它。我开始编写自己的 ModelBinder,但后来决定再尝试一次。

在尝试提供排序参数时会很接近 - ModelBinder 填充排序对象,但“成员”字段始终为空:

【问题讨论】:

    标签: c# kendo-ui kendo-grid kendo-asp.net-mvc


    【解决方案1】:

    如果您的页面中未包含kendo.aspnetmvc.min.js,则可能会发生这种情况。

    检查this是否有用。

    希望有帮助

    【讨论】:

      【解决方案2】:

      这似乎已通过将type: "webapi", 添加到我的数据源来解决。所以它最终看起来像这样:

      var myDS = new kendo.data.DataSource({
          serverPaging: true,
          serverSorting: true,
          pageSize: 3,
          type: "webapi",
          transport: {
              read: {
                  url: "/api/kendotest/GetKendoGridData"
              }
          },
          schema: {
              data: "Data",
              total: "Total"
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-22
        • 2021-11-14
        • 1970-01-01
        • 1970-01-01
        • 2015-01-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多