【发布时间】:2012-12-07 02:29:48
【问题描述】:
我在按钮单击事件中有一些代码,它从隐藏的输入中获取 csv 字符串并将其作为 CSV 文件写入响应。
这在 Chrome、Firefox、ie7、ie9 的 quirks 模式下运行良好。但是,它在 ie8 或 ie9 默认情况下不起作用。
在 fiddler 中查看这个,csv 被写入响应,但另一个 get 请求在之后立即发出并且页面重新加载。没有文件保存对话框出现。
protected void btnCsvHidden_Click(object sender, EventArgs e)
{
var csv = csvString.Value;
var filename = "Reporting";
Response.Clear();
Response.ClearHeaders();
Response.AddHeader("Cache-Control", "no-store, no-cache");
Response.AddHeader("content-disposition", "attachment; filename=\"" + filename + ".csv\"");
Response.ContentType = "text/csv";
Response.Write(csv);
Response.End();
}
【问题讨论】:
-
你看过this相关的SO问题吗?
-
是否有可以看到此内容的实时 URL?您确定在生成下载提示之前没有任何其他事件处理程序导致页面刷新吗?如果您将 Content-Type 更改为 application/octet-stream ,您会看到同样的问题吗?
-
不幸的是我没有一个活生生的例子,我开始认为这是我自己的ie安装的问题。
-
是的,我在设置不同的内容类型时仍然遇到同样的问题
-
我将您的代码复制到我自己的页面中并在 IE9 中运行它并且能够下载它...听起来这是您的问题。回发后发出的 get 请求是什么?
标签: c# asp.net internet-explorer-9 webforms