JQuery BlockUI - 如何在文件下载后取消阻止UI?

时间:2009-03-25 21:35:39

标签: asp.net javascript jquery blockui

使用ASP.Net,JQuery和BlockUI,我试图在显示下载文件对话框后取消阻止UI。

单击导出按钮时阻止UI:

   <script type="text/javascript">     
    $(document).ready(function(){        
        $('#<%= BtnExport.ClientID%>').click(function(){
            $.blockUI(); 
        });
    });    
    </script>

在此之后,我使用:

生成文件服务器端
        private void SendFileToUser(byte[] file, string contentType, string filename)
        {
            Response.Clear();
            Response.ContentType = contentType;
            Response.AppendHeader("Content-Disposition", "attachment; filename="+filename);
            Response.OutputStream.Write(file,0,file.Length);
            Response.OutputStream.Flush();   
            Response.End();
        }

执行此代码后,我想取消阻止用户界面。

我考虑过不同的选择:

  1. 使用Ajax调用轮询以查看文件是否已生成。
  2. 将文件存储在Session中并重定向到同一页面然后生成下载。
  3. 但这两个选项看起来都很尴尬,我认为必须有一种聪明的JavaScript方法来处理或等待文件对话框。

    有什么建议吗?

3 个答案:

答案 0 :(得分:1)

没有办法检查这个;没有像ondownloadready这样的事件。 但是有一些解决方法 http://gruffcode.com/2010/10/28/detecting-the-file-download-dialog-in-the-browser

答案 1 :(得分:0)

不要将文件存储在会话中,这是对资源的巨大浪费。为什么不将表单数据发布到“下载”页面,其中包含“您的文件应该立即下载...”消息。这是www.download.com等下载网站在到达download page时的热门程度。

这使用户可以通过刷新进行重试,而且您不必担心会话超时,因为当他们到达页面时,所有数据都在POST标题中。

答案 2 :(得分:0)

我使用的方法是发送一个cookie,除了文件附件,您可以使用JavaScript通过超时检测,然后取消阻止ui

详情请见http://geekswithblogs.net/GruffCode/archive/2010/10/28/detecting-the-file-download-dialog-in-the-browser.aspx