响应前关闭模态.刷新-C#
本文关键字:刷新 -C# 模态 响应 | 更新日期: 2023-09-27 18:01:15
我在模式关闭方面有问题。。。所以我有这个按钮btnReportingExport
,它在模式里面
<div id="Reporting_footer" class="modal-footer">
<asp:Button ID="btnReportingExport" runat="server" Text="Export"
CssClass="btn btn-default" OnClientClick="ChangeModalFunction();"
OnClick="btnReportingExport_Click"/>
<input id="Submit1" class="btn btn-default" type="submit" data-dismiss="modal"
value="Cancel" />
</div>
该按钮首先调用JS函数ChangeModalFunction
,它看起来像这个
function ChangeModalFunction() {
$('#Reporting_modal').modal('hide');
$('#GenerateReport_modal').modal('toggle');
}
因此,我只是隐藏模态,并显示另一个只有.gif
动画的模态来生成报告。在那之后,我的主要事件发生了btnReportingExport_Click
,它做了很多事情,从SQL中获取数据,将其放在excel上,转换为PDF,压缩并将其放入响应中看起来是这样的。。。
Response.Clear();
Response.ContentType = "application/x-zip-compressed";
Response.AddHeader("Content-Disposition",
string.Format("attachment; filename='"{0}.zip'"", QuestionnaireName));
Response.WriteFile(FilePathZip);
所以,我想完成的是,在我刷新响应之前,用.gif
关闭模态,但失败得很惨。。。我再也不知道该怎么做了
ScriptManager.RegisterStartupScript(this, this.GetType(),
"CloseModal", "Closepopup();", true);
Response.Flush();
Closepopup
函数只是完成的简单函数
function Closepopup() {
$('#GenerateReport_modal').modal('hide');
}
所以,在那次漫长的代码之旅之后,我的问题出现了,我得到了下载文件对话框,我的模态仍然在后台运行。我完全不知道如何修复它,如何在执行Response.Flush()
之前对代码隐藏模态?
感谢您的帮助,我为
有趣的场景,我希望您尝试以下解决方案:使用jquery通过ajax请求调用zip文件端点(也可以使用vanillajavascript(。然后将此事件onreadystatechange
绑定到您的请求。
$(".submitButton").click(function(){
var xhr = $.ajax({url: "/data.zip",
success: function(result){
}});
xhr.onreadystatechange = function() {
if(xhr.readyState === 4)
Closepopup();
};
});
该事件将以5种不同状态触发:
- 0:请求未初始化
- 1:服务器连接已建立
- 2:收到请求
- 3:处理请求
- 4:请求完成,响应准备就绪
我相信,当你得到这个状态4时,对话框将在同一时间打开,你可以关闭弹出窗口。