当DataSourceRequestModelBinder
运行并尝试在Grid发送的参数上创建DataSourceRequest
时,似乎出现了问题。这是MVC 6
Kendo.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);
}
初始读取工作正常,分页工作正常,但服务器端排序不正常。我认为这是因为Kendo网格在排序参数中发送的方式导致DataSourceRequestModelBinder
无法解析它。我开始编写自己的ModelBinder,但后来决定再次尝试解决这个问题。
答案 0 :(得分:0)
答案 1 :(得分:0)
这似乎是通过向我的数据源添加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"
}
});