我有一個帶有圖像按鈕的頁面。當用戶單擊圖像按鈕時,服務器將創建該頁面的PDF,並將帶有下載的響應發送回客戶端。問題是這可能需要一些時間。我該怎麼處理等待客戶?檢測客戶端上的Response.BinaryWrite
我最初的想法是在顯示加載器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);" />
酷,學到新的東西!但是,我的問題仍然存在 - 我如何檢測響應何時發佈以便隱藏加載器?耗時是在點擊之間到文件準備好下載之間。 – Skalis