好的,我已经完成了作业并发现了类似的线程。然而,我还没有找到好的答案。
使用 MVC3、C#、Razor 视图引擎。
我的场景非常简单。我有一个带有调用控制器上的操作的链接的视图。该操作返回动态生成的文件。该过程持续 1 到 10 秒。在此期间,我想锁定用户界面并显示“请稍候”消息。
我的第一次尝试使用了这样的东西:
@Ajax.ActionLink("my test link", "myAction", new { Controller = "myController" }, new AjaxOptions { OnBegin = "ajaxStart", OnComplete = "ajaxStop" })
然后,ajaxStart 和 ajaxStop 函数使用 jquery blockUI 脚本来阻止和取消阻止 UI,并显示“请稍候”消息。这是有效的,因为它显示了消息,但不会下载任何文件。经过更多研究,我发现我无法使用 Ajax 来启动文件下载。如果我错了,请赐教。
所以,我回到了正常的 ActionLink。这有效,因为我可以下载文件。我什至可以捕获 .click 事件并阻止 UI 并显示等待消息。但是,我如何知道何时解锁 UI?我如何知道文件保存/打开对话框何时打开?也许如果我能捕捉到该事件,我就可以解锁 UI。
我看过其他帖子,通过将文件生成/下载分解为单独的功能来推荐更复杂的解决方案。我非常想避免必须将文件保存在服务器上,或者必须轮询服务器以查看文件是否已完成。这应该相当简单。
如果有人有任何想法,请告诉我。
谢谢,
托尼
不久前有一篇关于此的帖子:检测浏览器何时接收文件下载 https://stackoverflow.com/questions/1106377/detect-when-browser-receives-file-download
它引用了这个链接:http://geekswithblogs.net/GruffCode/archive/2010/10/28/detecting-the-file-download-dialog-in-the-browser.aspx http://geekswithblogs.net/GruffCode/archive/2010/10/28/detecting-the-file-download-dialog-in-the-browser.aspx
实际上,它的作用是将 cookie(C# 生成的)和文件(用户正在下载的)一起发送到客户端。一旦客户端拥有cookie,理论上就会发生这种情况after文件已下载)。 Javascript 将检查客户端是否有该 cookie,如果有,Javascript 将解锁 UI。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)