我有一个带有图像按钮的页面。当用户单击图像按钮时,服务器会创建页面的 PDF,并将下载的响应发送回客户端。问题是这可能需要一些时间。我该如何/应该如何处理等待客户的问题?
我最初的想法是在显示加载程序 GIF 的按钮上执行 onClientClick 事件。但是我无法检测到响应何时完成,以便我可以再次隐藏它。我曾尝试使用RegisterStartupScript以及Response.Write([script]),但这一切似乎都被 PDF 的Response.BinaryWrite(buffer)覆盖- 文件被下载但没有其他任何反应。
这是我的代码,只有下载逻辑:
protected void imgPrint_Click(object sender, ImageClickEventArgs e)
{
PDF pdf = new PDF();
byte[] buffer = pdf.ExportToPDF(Request.QueryString["id"].ToString(), Request.QueryString["mode"].ToString());
string att = "attachment; filename=" + Request.QueryString["mode"].ToString() + ".pdf";
Response.ClearContent();
Response.AddHeader("content-disposition", att);
Response.ContentType = "application/pdf";
Response.ContentEncoding = Encoding.Default;
Response.BinaryWrite(buffer);
}
带有 onClientClick 事件的图像按钮当前仅显示警报:
<asp:ImageButton ID="imgPrint" runat="server"
ImageUrl="~/bilder/skriv_ut.png" Width="45" Height="36"
onclick="imgPrint_Click" OnClientClick="loader(true);" />