Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 下载FireJavaScript之后_C#_Javascript_Jquery_Asp.net - Fatal编程技术网

C# 下载FireJavaScript之后

C# 下载FireJavaScript之后,c#,javascript,jquery,asp.net,C#,Javascript,Jquery,Asp.net,我有一个asp.net应用程序,我正在尝试编写一个csv。一旦对话框显示或之后没有任何区别,我只想显示一些消息,说明一切进展顺利。我正在尝试启动一些javascript来简单地更改元素的样式,并进行一些测试以证明下载成功 下载效果很好,我就是这样做的,但我也相信这是导致我出现问题的原因: Response.Clear(); Response.Buffer = true; Response.AddHeader("content-disposition"

我有一个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-您正在下载一个文件,并且在您的响应中,您试图注入javascript代码以与文件缓冲区一起执行
System.Web.UI.ScriptManager.RegisterStartupScript
使用您尝试执行的javascript向响应中添加HTML脚本标记

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

如何解决:

要解决这个问题,您必须重新构造代码。或许可以尝试以下方法:

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

您无法在响应后发送任何内容。调用End。基本上,它停止页面的执行,线程中止

如果要在下载文件后显示消息,可以使用

您可以测试演示应用程序

这是示例应用程序


谢谢您的回复。我添加了response.end,就像我没有它一样,当我返回结果时,除了我的结果之外,我还会得到页面标记。我喜欢将其称为客户端,但我的服务器端方法不是静态的。有没有办法通过jquery调用非静态方法?您可以创建一个ASMX或WCF服务来处理文件下载。