我正在尝试使用Kendo的服务器端分页/过滤/排序,截至目前我正在按如下方式进行:
数据源是:
var QueueMessages = {
type: "aspnetmvc-ajax",
transport: {
read: {
url: "api/QueueMessages/wut",
dataType: "json",
type: "GET"
}
},
schema: {
model: ........
},
pageSize: 10,
serverPaging: true,
serverFiltering: true,
serverSorting: true,
filter: ....
};
并在api控制器中:
[HttpGet]
[ActionName("wut")]
public DataSourceResult wut([DataSourceRequest]DataSourceRequest request)
{
return messages.ToDataSourceResult(request);
}
但是,DataSourceRequest request
始终为null
我已经尝试了一些解决方案,我发现类似的问题寻找丢失的.js,或this无济于事。
答案 0 :(得分:1)
创建datasource
应该是这样的:
var QueueMessages = new kendo.data.DataSource({
type: "aspnetmvc-ajax",
transport: {
read: {
url: "api/QueueMessages/wut",
dataType: "json",
type: "GET"
}
},
schema: {
model: ........
},
pageSize: 10,
serverPaging: true,
serverFiltering: true,
serverSorting: true,
filter: ....
});
您错过了新的kendo.data.DataSource
答案 1 :(得分:0)
我使用以下方法解决了我的问题:
public DataSourceResult Get([System.Web.Http.ModelBinding.ModelBinder(typeof(WebApiDataSourceREquestModelBinder))] DataSourceRequest request)
{
// return your data
}
因此,看来Kendo UI确实是 在寻找
System.Web.Http.ModelBinding.ModelBinder
类将请求绑定到您的控制器。因此,如果您不使用该类绑定请求,则它将为null。请注意,这里有一个ModelBinder
属性类,请不要使用它,因为结果也将为null。
以下是我正在使用的文档(即使它是C#包装程序),有一天可能会有用:https://docs.telerik.com/aspnet-mvc/helpers/grid/editing/webapi-editing?_ga=2.245906311.2036381207.1547477384-1442120099.1541630215 [Web api文档]
我希望这会有所帮助。