Response.Redirect 使用更新进度 C#.NET 时在更新面板内

Response.Redirect inside Update Panel While Using Update Progress C#.NET

我有一个使用 ajax 与 asp.net 和 C# 的 Web 应用程序。现在,我尝试在单击 ASP 按钮时从 CodeBehind(页面名称为 original.aspx)将报表查看器导出为 PDF 文件。一切正常,除非我将按钮放在 UpdatePanel 中。因此,在搜索互联网后,我发现 Response.BinaryWrite、Response.Flush 等不适用于 UpdanePanel,除非我将按钮指定为 PostBackTrigger,然后忽略使用 UpdatePanel 的目的,因为页面有很多控件,在到达导出步骤之前要执行很多步骤。

所以我将导出为 PDF 的代码转移到另一个页面上的页面加载事件(假设 Default.aspx) 并想使用 Response.Redirect 为导出页面打开一个新选项卡。

真正发生的是自动下载 PDF(虽然仍在原始页面中( original.aspx)) 并且没有重定向 - 这很好 - 但 UpdateProgress 已激活并且从未停止显示 gif 图片。继续循环。从代码中删除 UpdateProgress 时,一切都按预期运行。当按钮位于 UpdatePanel 内(异步而非 PostBackTrigger)并使用 CodeBehind 中的 Response.Redirect 时导出和下载文件。

是否有任何禁用、终止 UpdateProgress 进程的解决方案仅需一次特定的点击即可从代码隐藏或针对此问题的任何其他解决方案?

您可以在 PostBackTrigger 中设置控件的 ID 以回发 整页 而不是 部分页面更新 导致文件下载问题。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    ...
   <Triggers>
      <asp:PostBackTrigger ControlID="DownloadButton" />
   </Triggers>
</asp:UpdatePanel>