MVC文件下载在IE中不起作用

时间:2016-06-08 18:55:46

标签: asp.net-mvc internet-explorer

我看过很多关于将文件返回到视图并刷新的问题和帖子。我的问题是返回工作在Firefox,Chrome等,但不适用于IE。当在IE中执行相同的代码时,它实际上刷新了视图,但我没有获得文件。我在aspx上的脚本中有一个单击处理程序

    function RunReport(iExport) {
        var fromDate = "";
        var toDate = "";

        fromDate = viewModel.FromDate;
        toDate = viewModel.ToDate;

        $.ajax({
            url: 'Reports/RunReport',
            type: 'POST',
            dataType: "json",
            traditional: true,
            data: { 'fromdate': fromDate, 'toDate': toDate, 'doExport': iExport },
            success: function (data) {
                if (data.success == "true") {
                    location.reload();         
                }
            },
            error: function (e) {
                //notify.show({type: 'error', header: "Error applying Filters!", content: "Unable to apply filters." + e });
            }
        });  
    }

RunReport操作设置一些变量,返回一个真实的结果,然后页面重新加载检查iExport变量。

在加载页面(ActionResult Index())期间,使用已设置的某些过滤器和变量刷新数据。然后如果iExport = 1确实如此:return ExportReport(model);

出口报告:

    public FileContentResult ExportReport(ReportViewModel model)
    {
        string sCSV = "";
        sCSV = DoSomeProcessingToGetCSVString...;

//我已尝试使用和不使用标题

        var cd = new System.Net.Mime.ContentDisposition
        {
            // for example foo.bak
            FileName = "Test.csv",

            Inline = false,
        };

        Response.AppendHeader("Content-Disposition", cd.ToString());
        return File(new System.Text.UTF8Encoding().GetBytes(sCSV), "text/csv", "Test.csv");

}

当它返回文件时,它实际上只是刷新/重新加载调用Index()动作结果的页面,它永远不会产生下载。这在其他浏览器中有效,并且不刷新页面

最初收到iExport = 1时我将其重置为null,因此返回页面将不会继续导出。如果我评论出来并让它保持= 1然后第二次加载它会导出文件,但当然导航到空白页。

有没有更好的方法来实现这一点,或IE存在问题(我在IE11上)?

0 个答案:

没有答案