【问题标题】:Call JavaScript function after file download complete ASP.NET MVC文件下载完成后调用 JavaScript 函数 ASP.NET MVC
【发布时间】:2021-10-07 17:12:40
【问题描述】:

我有一个 ASP.NET MVC 应用程序,其中我在 html 表中显示一些文件,用户可以在其中通过单击来下载文件。

有一个要求,一旦用户下载了文件,表格中的文件记录就不能再显示了。当用户下载文件时,我在后端表中将其标记为用户已下载,如果我刷新页面,则该记录将不会显示在网格上,因为它不再来自后端。

我面临的问题是,一旦我从控制器返回文件,我就无法找到运行刷新 JavaScript 方法的方法。 html表中的下载链接是一个锚标签。

谁能给我一个解决方案。

谢谢

【问题讨论】:

  • 您不能只通过控制器操作刷新整个页面,还是将表格作为部分视图并使用 Javascript 刷新部分视图?
  • 表格处于局部视图中。控制器返回一个 FileStreamResult。下载文件后,我需要调用刷新此部分视图的 JavaScript 函数。

标签: javascript asp.net-mvc asp.net-mvc-5


【解决方案1】:

我找到了解决我的问题的变通方法。以下是我经过一番搜索后得出的解决方案。

  1. 在文件返回之前向响应中添加 cookie。

  2. 当文件下载开始时,这个 cookie 将被写入浏览器。当用户单击页面上的锚链接时会触发文件下载。因此,我随后在锚标记中添加了一个 onclick 事件,并使用 setInterval() 方法注册了一个 JavaScript 计时器以每 1 秒运行一次。

  3. 当计时器计时,它将在浏览器中检查上述cookie。我使用库https://github.com/js-cookie/js-cookie 来检查并获取cookie。

  4. 如果 cookie 存在,那么我调用我的 JavaScript 函数来刷新 html 表并从浏览器中删除 cookie,然后使用 clearInterval() 方法删除 JavaScript 计时器。

【讨论】:

    猜你喜欢
    • 2015-12-08
    • 1970-01-01
    • 2013-01-18
    • 2015-01-28
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    相关资源
    最近更新 更多