用户填写表格以下载文件。表单结果在新窗口中加载(target =“blank”)。 MVC Controller Action在成功时返回FileResult,或在失败时返回“SelfClosingPage”视图。
这背后的目标是让用户在新页面中下载文件,如果发生任何错误,原始调用页面的url不会更改(到/ DownloadFile url),用户仍然在表单页面上而不是被定向到错误页面。
这一切都很好,除了我需要知道文件下载何时完成,因为我想1)隐藏“文件下载,请耐心等”消息,如果下载成功2)显示错误消息如果文件下载失败。
我使用Cookie执行此操作,并使用JS间隔来定期检查Cookie值。它要么从不工作,要么不再工作(我永远不会让cookie出现在原始页面上)。
请指教。我不能在我的JS中使用C#代码,因为它在页面加载时执行一次并且我试图将JS与C#代码分离,因此无法工作。
我认为我唯一的解决方案是进行ajax javascript回调,但我想避免这种情况。
更新
发现这些相关的SO链接使用了我尝试使用的相同方法。
MVC3 - File Download - Wait Status indicator
Detect when browser receives file download
更新2
它再次运作。我认为饼干的有效期不够长(虽然应该是这样)。我只是把它从10分钟(文件下载不应该花费更长时间)改为半天。