在C中使用清除的响应在回发后执行Javascript#

在C中使用清除的响应在回发后执行Javascript#,javascript,c#,jquery,asp.net,postback,Javascript,C#,Jquery,Asp.net,Postback,当用户单击我网站上的按钮时,我会在服务器端生成一个excel文件,并将其写入响应中 HttpResponse httpResponse = Page.Response; httpResponse.ClearHeaders(); httpResponse.ClearContent(); httpResponse.Clear(); httpResponse.Buffer = true; httpResponse.AppendHeader("Content-Disposition", "attachm

当用户单击我网站上的按钮时,我会在服务器端生成一个excel文件,并将其写入响应中

HttpResponse httpResponse = Page.Response;
httpResponse.ClearHeaders();
httpResponse.ClearContent();
httpResponse.Clear();
httpResponse.Buffer = true;
httpResponse.AppendHeader("Content-Disposition",
"attachment; " +
"filename=\"" + fileName + "\";");
httpResponse.ContentType = "application/vnd.xlsx";
httpResponse.Charset = "";

using (MemoryStream memoryStream = new MemoryStream())
{
    workbook.SaveAs(memoryStream);
    memoryStream.WriteTo(httpResponse.OutputStream);
    memoryStream.Close();
}

httpResponse.Flush();
httpResponse.End();
当我写完这个文件后,我想运行一个JavaScript脚本块,但我似乎无法实现这一点。我听说当我清除响应时,我不能用
Page.ClientScript.RegisterStartupScript
(已弃用?)编写脚本块,因为用户没有得到与响应相同的页面,但我希望有一个解决方法

进行回发和获取文件的按钮不在UpdatePanel中,因此我无法使用在那里实现的函数。我不能将控件放入UpdatePanel,因为它不允许我在异步回发中写入文件

有没有其他方法可以在回发结束时触发javascript函数?检查回发是否正在进行(或已完成)的JavaScript间隔函数也是一个可接受的解决方案(但据我所知,JavaScript无法“检查”同步回发是否正在进行)

Response.End()中止线程并将执行发送到应用程序\u EndRequest。
在那之后什么也做不了。您可以下载该文件或执行javascript。但是有一个解决方案使用。

看看这个问题的一些解决方法(问题:没有用于文件下载的浏览器事件)天哪,这是天才。它起作用了。谢谢你可以把它作为答案提交,如果你愿意,我会在我可以的时候接受。