我有一个简单的C#ASP.NET应用程序,它生成一个Excel文件并使用Response.WriteFile()函数将其发送到浏览器.
我想在点击后禁用提交按钮并在屏幕上显示一条消息等待几分钟,因为某些文件可能需要一段时间才能生成.这很好用,但在文件下载完成后,我无法弄清楚如何重新激活按钮,甚至刷新页面.该页面即使已完成,也会处于禁用状态,“请稍候……”状态.
我认为之后使用额外的javascript命令进行同步AJAX调用会起作用,但是虽然文件确实生成了,但它从未发送到浏览器.我也试过使用iframe控件,但找不到任何方法可靠地知道新文件何时完成加载.
提前感谢任何可以提供帮助的人!
更新:我在http://code.msdn.microsoft.com/AjaxFileDownload找到了一个可能的解决方案,非常适合下载已经存在的文件,但是当我调用生成文件的页面并使用Response.End()完成时,“完成下载”事件永远不会触发.
解决方法:
我这样做的方法是让页面生成一个令牌,并将所述令牌连同生成excel文件的请求一起发送到服务器.
当服务器获取令牌时,它会将其丢弃到数据库中的表中,一旦文件完成后,它将删除令牌.
现在,虽然所有这一切都发生了,但是如果数据库中存在令牌,那么在页面上有一个例程(查看JS Timers)会询问服务器(异步调用).当服务器最终告诉页面“否”时,您知道可以重新启用该页面并隐藏“请等待…”消息.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。