用户填写表格以下载文件。表单结果在新窗口中加载(target="blank")。MVC 控制器操作在成功时返回 FileResult,在失败时返回我的“SelfClosingPage”视图。
这背后的目标是让用户在新页面中下载文件,如果发生任何错误,原始调用页面的 url 不会更改(到 /DownloadFile url)并且用户保留在表单页面上,而不是被定向到错误页面。
这一切都很好,除了我需要知道文件下载何时完成,因为我想 1)如果下载成功,隐藏“文件正在下载,请耐心等待”消息 2)如果文件显示错误消息下载失败。
我使用 Cookie 来执行此操作,并使用 JS 间隔定期检查 cookie 值。它要么从来没有工作,要么不再工作(我永远无法让 cookie 显示在原始页面上)。
请指教。我不能在我的 JS 中使用 C# 代码,因为它不起作用,因为它在页面加载时执行一次,并且我试图将 JS 与 C# 代码分离。
我认为我唯一的解决方案是执行 ajax javascript 回调,但我想避免这种情况。
更新:
找到了这些相关的 SO 链接,它们使用的方法与我尝试使用的方法相同。
更新 2
它又开始工作了。我认为 cookie 的到期日期不够长(尽管应该如此)。我只是将它从 10 分钟(文件下载不应超过此时间)更改为半天。