【问题标题】:Post-back after file download does not work文件下载后回发不起作用
【发布时间】:2018-05-29 01:59:13
【问题描述】:

我的页面有一个弹出窗口。弹出窗口上的按钮生成并下载 Aspose excel 文件。 (页面也有Ajax设置)

现在文件下载后,我的按钮被禁用,除非我手动刷新,否则页面上没有其他功能。

页面弹出

<div class="modal hide" id="AwaitPracSignoffReportModal">
    <div class="modal-header">
        <a class="close" data-dismiss="modal">×</a>
        <h3>
            <asp:Label runat="server" ID="lblPopupHeading" Text="Awaiting Practice Sign-off Report" /></h3>
    </div>
   <!-- Other asp controls in popup-->

    <div class="modal-footer" style="margin-bottom: 5px">
        <button class="btn" data-dismiss="modal">
            Cancel</button>
        <asp:Button runat="server" ID="btnGenerateReport" CssClass="btn btn-primary"
            Text="Generate Report" ValidationGroup="ReportModal" OnClientClick="javascript:setFormSubmitToFalse();" />
    </div>

</div>

脚本

function HideGenerateReportPopup() {
            $('#AwaitPracSignoffReportModal').modal().hide();
        }

        function setFormSubmitToFalse() {
            setTimeout(function () { _spFormOnSubmitCalled = false; }, 3000);
            return true;
        }

代码隐藏

btnGenerateReport.Click += (s, ev) =>
        {
            this.Presenter.ExportToExcel();

            ScriptManager.RegisterStartupScript(this, this.GetType(), "Generate Report", "HideGenerateReportPopup();", true);
        };

演示者代码(不同项目)

 Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();
        int worksheetNo = 0;

        foreach (System.Data.DataTable dt in ds.Tables)
        {
            Aspose.Cells.Worksheet worksheet = workbook.Worksheets[worksheetNo];

            worksheet.Cells.ImportDataTable(dt, true, "A1");
            worksheet.AutoFitColumns();
            worksheetNo++;
        }

        workbook.Save(HttpContext.Current.Response, filename, ContentDisposition.Attachment, new XlsSaveOptions(SaveFormat.Excel97To2003));

            HttpContext.Current.Response.Flush();
        HttpContext.Current.Response.End();

我已按照推荐的here 添加了 setFormSubmitToFalse 函数。 如果我尝试为 btnGenerateReport 添加 AjaxSettings,则会出现脚本错误

未捕获的错误:Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器接收到的消息。此错误的常见原因是通过调用 Response.Write()、响应过滤器、HttpModules 或启用了服务器跟踪来修改响应。

当我删除它时,页面保持原样,不再有控制工作。

【问题讨论】:

  • Aspose.Cells 允许您将工作簿对象保存在字节数组中,即字节[]。看来,这个问题与 Aspose.Cells 无关。但如果您认为是因为 Aspose.Cells,那么请提交您的 ASP.NET Web 应用程序项目。它应该在没有任何业务逻辑的情况下更简单,并且应该复制问题。另一种方法是您将工作簿保存在 byte[] 中,然后自己将这些字节发送到响应流。它将帮助您缩小问题范围,您将了解...
  • ....你会知道你的问题是因为 Aspose.Cells 还是因为其他一些与 HTML、JavaScript、ASP.NET 等相关的问题。---注意:我我在 Aspose 担任开发人员布道师。

标签: download asp.net-ajax postback aspose aspose-cells


【解决方案1】:

找到我的答案here

页面和 PDF。你不能那样做。通常,下载页面会在您访问它们时作为单独的请求开始下载(我相信是通过 JavaScript),并带有直接链接,以防 JavaScript 不起作用。

现在我添加了一个单独的页面 (ashx) 并在单独的选项卡中打开它。

【讨论】:

    猜你喜欢
    • 2011-10-28
    • 2011-06-23
    • 2013-04-12
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    相关资源
    最近更新 更多