页面呈现和http处理程序

本文关键字:http 处理 程序 | 更新日期: 2023-09-27 17:49:49

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

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

另一个很好的东西是,如果我们可以在下载对话框出现后关闭父页面,这可以工作吗?

页面呈现和http处理程序

动态创建(在javascript中)一个指向下载地址的隐藏iframe,并将其添加到DOM中可以达到这个目的。

通过在处理程序的响应中使用内容处理头,您可以显示保存对话框,而无需打开新窗口。你不需要使用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),请参阅这个问题设置excel文档

的mime类型