页面呈现和http处理程序
本文关键字:http 处理 程序 | 更新日期: 2023-09-27 17:49:49
我们有一个在新的浏览器窗口中打开的页面,其中有一个自动重定向到生成某种XLS文件的ASHX处理程序。它是使用javascript重定向完成的,即将window.location.href
设置为ASHX的URL。
虽然它可以工作并显示文件的下载对话框,但设置window.location.href也会清除窗口的内容,使其保持空白。这在某种程度上是有意义的,但如果在前台打开下载对话框时保留前一页的内容,那就更好了。是否有可能(通过延迟重定向的执行或使用不同的技术调用ASHX处理程序)?
另一个很好的东西是,如果我们可以在下载对话框出现后关闭父页面,这可以工作吗?
动态创建(在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文档