2011-12-20 97 views
0

我有一个aspx页面,其中包含一个显示pdf的iframe页面(我在iframe中显示pdf时使用了ashx处理程序),我也有一个下载按钮,它将不同的pdf作为附件。 下载到浏览器的代码(这是ashx的处理程序)IE中的iframe变空白

byte[] bytes = // get byte array from table 
    Response.Buffer = false; 
    Response.Clear(); 
    Response.ClearContent(); 
    Response.ClearHeaders(); 
    Response.ContentType = "application/pdf"; 
    // [optional] 
    Response.AddHeader(
      "Content-Disposition", 
      string.Format("attachment; filename={0}", attachmentName) 
    ); 
    Response.OutputStream.Write(bytes, 0, bytes.Length); 
    Response.End(); 

此代码然而,发送此响应浏览器我的iframe中一片空白,我必须刷新页面才能再次见到它后工作正常。我想大部分的解决方案

  1. http://adamyoung.net/IE-Blocking-iFrame-Cookies
  2. http://forums.asp.net/p/1036628/1433536.aspx

但他们没有工作。 iframe在chrome & FF中表现良好。 注意:如果我下载的东西使用asp:超链接到我的ashx和设置目标=“_ blank”它在IE中工作正常,但我需要一些服务器端处理来做,因此我不能使用这种方法。

+0

您使用的是什么版本的IE?你尝试过哪些版本? – Xcalibur37 2011-12-21 01:34:40

+0

我使用IE9 n我试过IE 7,8。 – DotNetUser 2011-12-21 03:17:10

回答

1

虽然Chrome和FF离开页面,但这确实有意义。

您正在回发到服务器,然后清除您的整个输出,将一个文件放入流中并发送该文件。从技术上讲,我会说IE浏览器是正确的空白页面。

这是假设您的下载按钮是在iframe?

我想尝试的解决方案是将该下载链接放在另一个iFrame中,或者让另一个页面下载它,当你按下一个链接时,它会打开刚刚输出文件的新页面。所以窗口闪烁,然后消失,并出现保存对话框按钮。然而弹出窗口拦截器可能会试图阻止这一点。

+0

下载按钮不在iframe中,按钮在aspx页面上。下载按钮调用一个将浏览器响应的ashx处理程序。我不能有一个链接,而不是一个按钮,因为我必须做一些服务器端处理(以确定哪个pdf文件必须发送到客户端)并将查询字符串params传递给处理程序以获得正确的pdf。 – DotNetUser 2011-12-21 14:29:57

+0

那么为什么不按照我的建议把按钮放在iframe中呢? – 2011-12-22 00:00:31

+0

感谢您的回答,现在我只使用另一个窗口进行下载。在iframe中放置按钮会让用户因为滚动而变得复杂。 – DotNetUser 2011-12-29 17:58:28