将类型为“Kendo.Mvc.UI.DataSourceRequest”的对象从jquery传递到Mvc Action

本文关键字:Mvc jquery 对象 Action 类型 Kendo DataSourceRequest UI | 更新日期: 2023-09-27 18:31:19

目标:我想将类型为 Kendo.Mvc.UI.DataSourceRequest 的对象传递给 Mvc 操作,以便我可以根据应用的排序和过滤从数据库中获取结果。

问题/障碍:对象在到达操作时变为 null。

我的控制器操作

    public ActionResult Getresults([DataSourceRequest]DataSourceRequest request, Int32 TotalRec)
    {
        try
        {
            //get data from DAL
            var result = new DataSourceResult()
            {
                Data = List, // Process data (paging and sorting applied)
                Total = TotalRec
            };
            return Json(result, JsonRequestBehavior.AllowGet);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

我的 jquery 函数

function getData() {
    var gridDatasource = $('#gridname').data('kendoGrid').dataSource.options;
    var datatoPost = "{'request': '" + JSON.stringify(new kendo.data.DataSource(gridDatasource)) + "', 'TotalRec': '" + 100 + "'}";
    //new kendo.data.DataSource
    $.ajax({
        type: "Post",
        url: '/Administrator/Getresults/',
        contentType: "application/json; charset=utf-8",
        data: datatoPost,
        dataType: "json",
        processdata: false,
        success: function (value) {
            alert(value.d);
        },
        error: function () { alert("Ajax Error"); }
    });
}

我尝试JSON.stringify,但仍然相同也喜欢var datatoPost = "{'request': '" + JSON.stringify(gridDatasource) + "', 'TotalRec': '" + 100 + "'}";

我是否需要在此处解析我的对象,或者可以转换其类型。

将类型为“Kendo.Mvc.UI.DataSourceRequest”的对象从jquery传递到Mvc Action

对我来说,工作如下:

$("#excel").kendoButton({
  click: function (event) {
    var data = grid.dataSource._params();
    var prepared = grid.dataSource.transport.parameterMap(data);
    $.post("/Root/AnotherControllerMethod", prepared, 
       function (data, status, xhr) {
         console.log("Ok!");
       }
    );
  }
});