download - 文件下载后回发不起作用
问题描述
我的页面有一个弹出窗口。弹出窗口上的按钮生成并下载 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();
我已经按照这里的建议添加了 setFormSubmitToFalse 函数。如果我尝试为 btnGenerateReport 添加 AjaxSettings,则会出现脚本错误
未捕获的错误:Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器接收到的消息。此错误的常见原因是通过调用 Response.Write()、响应过滤器、HttpModules 或启用了服务器跟踪来修改响应。
当我删除它时,页面保持原样,不再有控制工作。
解决方案
在这里找到我的答案
页面和 PDF。你不能那样做。通常,下载页面会在您访问它们时作为单独的请求开始下载(我相信是通过 JavaScript),并带有直接链接,以防 JavaScript 不起作用。
现在我添加了一个单独的页面(ashx)并在单独的选项卡中打开它。
推荐阅读
- java - 我无法在宁静的 spring-boot 应用程序中发出 PUT 请求
- javascript - 为什么反应中的道具成为函数中的下一个参数返回一个函数
- powerbi - 需要调整 DAX 以在 Power BI 中显示正确的总数
- nginx - 在不绕过 AWS Cognito 的情况下反向代理到基于 VPC 的 AWS Elasticsearch 域
- amazon-web-services - 如何在自动缩放组中出现的 ecs 实例上启动新任务
- java - 尝试为我的播放器类测试块实现播放器重力(RealtutsGml Platformer 教程)
- javascript - 有没有办法通过浏览器扩展覆盖内置 Firefox PDF 阅读器的 CSS?
- google-apps-script - 谷歌脚本搜索单列并根据结果编辑行
- c - 父进程和子进程之间的第二个 MPI_Send 挂起
- oauth-2.0 - Google Cloud:将 OAuth 密钥标记为私有