c# - 下载后启动javascript

标签 c# javascript jquery asp.net

我有一个 asp.net 应用程序,我试图在其中写出一个 csv。一旦对话框显示或之后没有区别,我只是想显示一些消息,说明一切顺利。我正在尝试触发一些 javascript 来简单地更改元素的样式以及一些测试以表明下载成功。

下载工作正常,我就是这样做的,但也相信这是导致我的问题的原因:

       Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "inline; filename=myFile.csv");
        Response.Charset = "";
        Response.ContentType = "text/csv";

        FileInfo fileToDownload = new FileInfo(filename);

        Response.WriteFile(filename);
        Response.Flush();
        HttpContext.Current.ApplicationInstance.CompleteRequest();
        Response.End();
System.Web.UI.ScriptManager.RegisterStartupScript(this, this.GetType(), "s_DisplayLongRunningQueryComplete", "DisplayLongRunningQueryComplete();", true);

如果我将注册启动脚本的最后一行移动到它自己的按钮,那么可以说我没有任何问题并且工作正常。我也曾尝试将其移至上述火灾之前,但没有成功。

有人知道如何使这项工作有效吗?

谢谢。

最佳答案

你在这方面有几个问题:

1- 您正在下载一个文件,并且在您的响应中您正试图注入(inject) javascript 代码以与文件缓冲区一起执行。 System.Web.UI.ScriptManager.RegisterStartupScript 使用您尝试执行的 javascript 将 HTML Script 标记添加到响应中。

2- Response.End() 是另一个问题。假设您的响应不是文件下载(例如),一旦您调用此函数,将不会处理任何其他内容,因此不会调用任何网络资源。

如何解决:

您确实必须重构您的代码才能解决此问题。也许尝试以下操作:

  • 更改代码以下载文件而不调用脚本。
  • 通过 jQuery ajax 从客户端调用下载。
  • 下载成功后调用 javascript 代码。

关于c# - 下载后启动javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22845723/

相关文章:

javascript - 从 Click 回调函数中访问 JQuery UI Widget

javascript - 将 JS 转换为 jQuery 多个实例的点击函数

c# - 为什么在调用提交函数时 SqlTransaction 可能会提交失败?

c# - Linq to SQL 不将数据插入数据库

javascript - jQuery data() 如何打破循环引用

javascript - 将图像添加到 JS React Portfolio 时出现错误消息

jQuery 在tinyMCE 编辑器中获取N 个元素的计数

jquery - 如何使用这个例子 addClass 和 removeClass

c# - 静态类型不能用作参数

c# - 为什么我要在 TCP 客户端关闭后强制进行垃圾回收?