我们有一个页面在新的浏览器窗口中打开,其中有一个自动重定向到ASHX处理程序,该处理程序生成某种XLS文件。它是使用javascript重定向完成的,即将window.location.href
设置为ASHX的URL。
虽然它可以工作并显示文件的下载对话框,但是设置window.location.href也会清除窗口的内容,使其保持空白。它在某种程度上是有道理的,但在前台打开下载对话框的同时保持上一页的内容仍然很好。是否有可能(通过推迟重定向的执行或使用不同的技术来调用ASHX处理程序)?
如果我们可以在下载对话框出现后关闭父页面,那么另一个很好的事情是,这可以以任何方式工作吗?
答案 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