MVC请求URL太长,文件返回问题

时间:2017-09-18 08:01:43

标签: ajax asp.net-mvc

我需要向MVC控制器发送500个GUID,根据此Id获取一些数据并返回excel表。我的控制器上有一个POST方法

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult ExportToExcel(List<string> contractIds)
    {
        var contracts = SearchContracts.ExportToExcel(string.Join(",", contractIds));

        byte[] filecontent = ExcelExportHelper.ExportExcel(contracts, "Report", false, null);
        return File(filecontent, ExcelExportHelper.ExcelContentTypeXlsx, "Report.xlsx");
    }

如果我采用AJAX方式,我需要使用AJAX type: "POST",一切看起来都不错,但没有文件返回给客户端:

function exportToExcel() {
    var selectedContractsId = getSelectedContracts();

    $.ajax({
        type: "POST",
        url: "@Url.Action("ExportToExcel", "Search")",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(selectedContractsId),
        dataType: "json"
    });
}

如果我将其作为标准MVC操作并将控制器方法更改为HttpVerbs.Get,则将文件返回给客户端但是我遇到URL Too Long异常的问题并且更新了Web.config maxUrlLength参数是不适合我,因为500 GUID不是最大的,你可以选择例如10000个GUID,查询字符串中有370 000个字符。

function exportToExcel() {
    var selectedContractsId = getSelectedContracts();

    location.href = '@Url.Action("ExportToExcel", "Search")?contractIds=' + selectedContractsId;
}

0 个答案:

没有答案