【发布时间】:2014-12-12 16:56:49
【问题描述】:
当用户单击我网站上的按钮时,我会在服务器端创建一个 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 中,因此我无法使用那里实现的 PageRequestManager.add_endRequest 函数。而且我无法将控件放入 UpdatePanel,因为它不允许我在异步回发中写入文件。
还有其他方法可以在回发结束时触发 javascript 函数吗?检查回发是否正在进行(或完成)的 JavaScript 间隔函数也是一种可接受的解决方案(但据我所知,JavaScript 无法“检查”同步回发是否正在进行中)。
【问题讨论】:
标签: javascript c# jquery asp.net postback