将DataSourceRequest对象从JavaScript函数发送到MVC控制器端点

将DataSourceRequest对象从JavaScript函数发送到MVC控制器端点,javascript,jquery,asp.net-mvc-4,kendo-ui,kendo-grid,Javascript,Jquery,Asp.net Mvc 4,Kendo Ui,Kendo Grid,我想将DataSourceRequest对象从JavaScript函数发送到MVC控制器端点,该端点根据应用于网格数据源的过滤器过滤IQueryable,然后将结果数据导出到excel中 这就是我在javascript上所做的: exportData = function () { var grid = $("#QuoteGrid").data("kendoGrid"); var parameterMap = grid.dataSource.transport.

我想将DataSourceRequest对象从JavaScript函数发送到MVC控制器端点,该端点根据应用于网格数据源的过滤器过滤IQueryable,然后将结果数据导出到excel中

这就是我在javascript上所做的:

exportData = function () {

        var grid = $("#QuoteGrid").data("kendoGrid");
        var parameterMap = grid.dataSource.transport.parameterMap;
        var sortData = grid.dataSource.sort();
        var filterData = grid.dataSource.filter();
        var groupData = grid.dataSource.group();        
        var data = parameterMap({ sort: sortData, filter: filterData, group: groupData });
        var request = $.toJSON(data);
        location.href = CUSTOMER_QUOTES_EXPORT_URL + "?request=" + request;                
        return false;
    }
这是我的mvc控制器的终点

public FileResult ExportQuotes([DataSourceRequest]DataSourceRequest request)
{
...
}
但是请求参数永远不会被JavaScript调用传递的数据填充,正如我所附的图片所示:

我做错了什么


提前感谢您的帮助

尝试更改,您正在使用“获取”请求,因此参数将进入查询字符串

var请求=$.toJSON(数据)

location.href=CUSTOMER\u QUOTES\u EXPORT\u URL+“?request=“+request

为此:

var请求=decodeURIComponent($.param(数据))

location.href=CUSTOMER\u QUOTES\u EXPORT\u URL+“?”+请求