【问题标题】:Response.Redirect inside Update Panel While Using Update Progress C#.NET使用更新进度 C#.NET 时更新面板内的 Response.Redirect
【发布时间】:2017-02-01 19:03:02
【问题描述】:

我有一个使用 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 进程,只需要一个特定点击甚至此问题的任何其他解决方案?

【问题讨论】:

    标签: c# asp.net ajax updatepanel updateprogress


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-27
      • 1970-01-01
      • 2020-10-19
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多