javascript - 将 DataSourceRequest 对象从 JavaScript 函数发送到 MVC Controller 端点

标签 javascript jquery asp.net-mvc-4 kendo-ui kendo-grid

我想将 DataSourceRequest 对象从 JavaScript 函数发送到 MVC Controller 端点,该端点会考虑应用于网格数据源的过滤器来过滤 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 Controller 端点

public FileResult ExportQuotes([DataSourceRequest]DataSourceRequest request)
{
...
}

但是请求参数永远不会填充 JavaScript 调用传递的数据,正如您从我所附的图片中看到的那样:

Image 1 - Object being constructed by the parameterMap

Image 2 - URL being sent to the end-point

Image 3 - MVC Controller Endpoint Parameter

我做错了什么?

预先感谢您的帮助

最佳答案

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

var request = $.toJSON(data);

location.href = CUSTOMER_QUOTES_EXPORT_URL + "?request=" + request;

对此:

var request = decodeURIComponent($.param(data));

location.href = CUSTOMER_QUOTES_EXPORT_URL + "?"+request;

关于javascript - 将 DataSourceRequest 对象从 JavaScript 函数发送到 MVC Controller 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25529428/

相关文章:

javascript - 一旦附加到浏览器中的根对象,引用时是否必须使用根前缀?

javascript - 仅跟踪过去一周帖子浏览量的功能

javascript - 无法成功将元素从一个 div 单独拖放到另一个 div

asp.net-mvc - 在 MVC4 中设置 SimpleMembership

javascript - Jquery 获取 url id

c# - DropDownListFor Inside EditorFor 不选择值

javascript - 使用 typescript 在 Node 项目中导入 Node 获取

JavaScript for循环 "jump over value"

javascript - 扩展函数

html - 如何以编程方式在 JQM 中创建 ListView