DataSourceRequest始终为null

时间:2014-07-08 08:13:53

标签: asp.net-web-api kendo-ui kendo-datasource

我正在尝试使用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无济于事。

2 个答案:

答案 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文档]

我希望这会有所帮助。