在我的Asp.net webforms站點中,我有一個表單,用戶選擇各種選項,這些選項發送回生成一個PDF報告,併發送該文件返回給用戶下載通過以下代碼:如何防止按鈕按下,直到表單請求完成表單請求導致文件下載
protected void btnTopGenReport_Click(object sender, EventArgs e)
{
var stream = new PodMainReportGenerator().GenerateReport(GetReportParameters());
var bytes = stream.ToArray();
stream.Close();
// Set the content headers
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment;filename=testReport.pdf");
Response.AddHeader("Content-Length", bytes.Length.ToString());
Response.BinaryWrite(bytes);
Response.End();
}
問題是這樣的報告可以採取好10秒左右,以產生由於數據和所需的處理量,但我不要讓人不耐煩,並一遍又一遍地點擊按鈕。
在一個正常的頁面中,我會添加JavaScript來禁用點擊按鈕。這是有效的,因爲回發完成後服務器會重新啓用表單按鈕。但是,由於表單的響應不是HTML頁面,而是下載的文件,我不知道該如何檢測。
本質上,我如何禁用窗體的按鈕,但一旦我們從服務器獲得響應(並啓動http文件傳輸),就重新啓用它們?
Prevously問http://stackoverflow.com/questions/6137172/how-do-i-prevent-users-clicking-a-button-twice – David
myButton.Enabled =假? – LightStriker
該問題只解答了我的一半問題,並未回答如何重新啓用按鈕。此外myButton.Enabled無法工作,因爲Asp.Net的響應不是重新呈現HTML,因爲它只是返回文件內容 – KallDrexx