4

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

问题/障碍: 对象到达动作时变为空。

我的控制器动作

    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 + "'}";

我需要在这里解析我的对象还是转换它的类型。

4

1 回答 1

9

对我来说,工作如下:

$("#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!");
       }
    );
  }
});
于 2014-01-07T13:34:24.530 回答