我有一个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);
如果我将我注册启动脚本的最后一行移动到其自己的按钮,我可以说我没有任何问题,而且工作正常。我已经尝试过将此移动到上述火灾之前,没有运气。
任何人都有任何想法如何使这项工作?
感谢。
答案 0 :(得分:1)
你有几个问题:
1-您正在下载文件,并且在您的响应中,您尝试注入javascript代码以与文件缓冲区一起执行。 System.Web.UI.ScriptManager.RegisterStartupScript
使用您尝试执行的javascript将HTML脚本标记添加到响应中。
2- Response.End()
是另一个问题。假设您的响应不是用于文件下载(例如),一旦调用此函数,就不会处理任何其他内容,因此不会调用任何Web资源。
如何解决:
您必须重新构建代码才能解决此问题。也许尝试以下方法:
答案 1 :(得分:1)
调用 Response.End 后,您无法发送任何内容。基本上,它会停止执行页面,并且线程会中止。
如果要在下载文件后显示消息,可以使用jQuery File Download Plugin for Ajax。
您可以测试演示应用程序Here。
Here是示例应用程序。