响应前关闭模态.刷新-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()之前对代码隐藏模态?

感谢您的帮助,我为

响应前关闭模态.刷新-C#

的文本墙道歉

有趣的场景,我希望您尝试以下解决方案:使用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种不同状态触发:

  1. 0:请求未初始化
  2. 1:服务器连接已建立
  3. 2:收到请求
  4. 3:处理请求
  5. 4:请求完成,响应准备就绪

我相信,当你得到这个状态4时,对话框将在同一时间打开,你可以关闭弹出窗口。