0

根据 ASP.NET 页面,单击按钮时应执行以下操作:

  1. 从服务器下载文件
  2. 执行清理操作,例如

    • 隐藏按钮
    • 将文本设置为标签
    • 显示标签
    • 禁用按钮
    • 等等

现在下载部分通过以下代码发生:

Response.Clear();               
Response.Buffer = true;
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment; filename="+strFileName+".pdf");
Response.WriteFile(strBrowserPath); 

其余的动作(第 2 点)在之后完成。

遗憾的是,由于使用了 Response.Clear()/Response.WriteFile(),其余的服务器端操作没有发生。

有什么选择吗?对此有任何修复吗?

4

1 回答 1

2

从您使用回发操作发送文件的那一刻起,您不能同时发送和更改页面(禁用按钮、更改文本等)。对此没有修复,因为没有问题,是它的工作方式。您有一个管道可以将您的响应发回。您要求一个 http 响应并得到一个 http 响应,您不能同时拥有更新页面和文件。

现在,另类。首先是您将如何发送文件。我建议使用带有参数的处理程序,download.ashx?Dhwoload=filea.pdf在您页面上的更新回发后,您调用

window.location = "download.ashx?Dhwoload=filea.pdf";

javascript,带有替代链接

<a href="download.ashx?Dhwoload=filea.pdf">if the file did not start to download automatically click here</a>

做你的工作。

相对:
从服务器下载文件的最佳方法是
从 ASP.NET Web 处理程序 (.ashx) 下载文件时的错误处理

于 2013-02-07T06:37:19.183 回答