gpt4 book ai didi

c# - 当表单请求导致文件下载时,如何防止按钮按下直到表单请求完成

转载 作者:太空狗 更新时间:2023-10-29 23:09:09 25 4
gpt4 key购买 nike

在我的 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 文件传输)后重新启用它们?

最佳答案

您只需要在响应内容之外有一个指示器来通知您下载已完成。尝试使用 cookie 监视器,将 cookie 设置为下载响应的一部分,并在主页中监视该 cookie 的存在。

http://gruffcode.com/2010/10/28/detecting-the-file-download-dialog-in-the-browser/

关于c# - 当表单请求导致文件下载时,如何防止按钮按下直到表单请求完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12977426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com