C# MVC6中的Kendo UI网格DataSourceRequest和DataSourceRequestModelBinder
当运行C# MVC6中的Kendo UI网格DataSourceRequest和DataSourceRequestModelBinder,c#,kendo-ui,kendo-grid,kendo-asp.net-mvc,C#,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,当运行DataSourceRequestModelBinder并尝试根据网格发送的参数创建DataSourceRequest时,似乎出现了一些问题。这是在mvc6和Kendo.mvcv2016.1.112中 在cshtml方面,剑道数据源如下所示: var myDS = new kendo.data.DataSource({ serverPaging: true, serverSorting: true, pageSize: 3, transport: {
DataSourceRequestModelBinder
并尝试根据网格发送的参数创建DataSourceRequest
时,似乎出现了一些问题。这是在mvc6
和Kendo.mvcv2016.1.112
中
在cshtml方面,剑道数据源如下所示:
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);
}
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"
}
});
控制器如下所示:
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);
}
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"
}
});
[路线(“GetKendoGridData”)]
公共DataSourceResult GetKendoGridData([DataSourceRequest]DataSourceRequest请求)
{
//创建一些示例对象
var id=新列表{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=>newmymodel
{
Id=i
});
返回data.AsQueryable().ToDataSourceResult(请求);
}
初始读取工作正常,分页工作正常,但服务器端排序不行。我认为这是因为剑道网格发送排序参数的方式导致DataSourceRequestModelBinder
无法解析它。我开始编写自己的ModelBinder,但后来决定再试一次
当尝试提供排序参数时,它很接近-ModelBinder填充排序对象,但“成员”字段始终为空:
如果页面中不包含
kendo.aspnetmvc.min.js
,可能会发生这种情况
支票是有用的
希望此帮助通过在我的数据源中添加
类型:“webapi”
可以解决此问题。所以它最终会变成这样:
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);
}
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"
}
});