页面呈现和http处理程序

时间:2011-04-13 08:41:23

标签: c# javascript asp.net httphandler ashx

我们有一个页面在新的浏览器窗口中打开,其中有一个自动重定向到ASHX处理程序,该处理程序生成某种XLS文件。它是使用javascript重定向完成的,即将window.location.href设置为ASHX的URL。

虽然它可以工作并显示文件的下载对话框,但是设置window.location.href也会清除窗口的内容,使其保持空白。它在某种程度上是有道理的,但在前台打开下载对话框的同时保持上一页的内容仍然很好。是否有可能(通过推迟重定向的执行或使用不同的技术来调用ASHX处理程序)?

如果我们可以在下载对话框出现后关闭父页面,那么另一个很好的事情是,这可以以任何方式工作吗?

2 个答案:

答案 0 :(得分:3)

动态创建(在javascript中)一个隐藏的iframe,指向下​​载ashx位置并将其添加到DOM中就可以了。

答案 1 :(得分:0)

通过在处理程序的响应中使用content-disposition标头,您可以显示保存对话框而无需打开新窗口。您无需使用javascript打开新窗口或创建iframe。

 response.Clear();
 response.ContentType = "application/vnd.ms-excel";
 response.AddHeader("content-disposition", "attachment; filename=sample.xls");
 response.AddHeader("content-legth", content.Length.ToString());
 response.Write(content.ToString());
 response.End();

有关可能的excel mime类型(contentType),请参阅此问题 Setting mime type for excel document