ASP.NET - 如何在文件下载后回发页面?

时间:2010-11-18 14:12:17

标签: c# javascript asp.net

我的情况:

用户单击LinkBut​​ton,页面执行PostBack。但我还需要同时向用户提示文件下载。

为了做到这一点,我在LinkBut​​ton

上做了这个
lnkPrint.Attributes.Add("onclick", "window.open('Download.ashx?type=x')");

Download.ashx Http Handler生成文件(Content-Type: application / pdf ),如果点击我的LinkBut​​ton,它会发布PostBack并下载显示弹出窗口后的文件...但我无法自动关闭此弹出窗口。

我尝试了一些方法

    下载后
  • settimeout('self.close()',1000)
  • 在LinkBut​​ton.Command上设置RegisterStartupScript,在回发后触发下载,但IE6会提示警告,这会打扰我的用户

因此,这些方法似乎都不能正常工作。

所以,我的问题是:有没有办法让弹出窗口立即消失,或者是否有办法让页面同时下载文件 AND 回发?

PS:我想到你的下载将很快开始方法,但我担心我会遇到与之前一样的RegisterStartupScript问题......

2 个答案:

答案 0 :(得分:3)

如果你想立即关闭窗户,你真的需要窗户吗?你不能这样做:

<a href="Download.ashx?type=x">Download</a>

然后没有弹出窗口,如果内容处置设置为附件,则不会将用户重定向到空白页。

答案 1 :(得分:0)

为什么不做正常的回发,然后做出你的回复,文件下载?只需执行Response.BinaryWrite()...并使用Response.ContentType 此外,您可以将content-disposition标头设置为您选择的文件名。