在我的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