使用c#从服务器端打开页面加载事件的模式弹出窗口

Posted

技术标签:

【中文标题】使用c#从服务器端打开页面加载事件的模式弹出窗口【英文标题】:Open modal Popup on pageload event from server side using c# 【发布时间】:2018-01-01 15:07:21 【问题描述】:

我想在页面加载事件的某些特定条件下显示模式弹出窗口,但它现在正在工作。

这是我的modalPopup:

<script type="text/javascript">
    function openModal(message, header, url) 
        $('#myModal').modal('show');
        $('#lblMasterMessage').html(header);
        $('#lblMasterbodyMessage').html(message);
        $('#myModal').on('hidden.bs.modal', function(e) 
            if (url != '') 
                window.location = url;
            
        );
    
</script>

<asp:Content ID="Content2" ContentPlaceHolderID="BodyContentPlaceHolder" runat="Server">
    <div class="modal fade" id="myModal" runat="server">
        <div class="modal-dialog">
            <div class="modal-content" style="width: 400px; margin: 0 auto;">
                <div class="modal-header" runat="server">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                <span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title">
                        <label id="lblMasterMessage"></label>
                    </h4>
                </div>
                <div class="modal-body">
                    <label id="lblMasterbodyMessage"></label>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-primary" data-dismiss="modal" runat="server">Close</button>
                </div>
            </div>
        </div>
    </div>
</asp:Content>

从后端调用模态弹出窗口:

protected void Page_Load(object sender, EventArgs e)

     if (dt.Rows.Count > 0)
     
         BindGrid();
     
     else
     
          string message = "Files are not Generated!";
          string header = "Info";
          ScriptManager.RegisterStartupScript(this, this.GetType(), "popup","openModal('" + message + "','" + header + "','MemberHomePage.aspx');", true);
         //ScriptManager.RegisterStartupScript(this, this.GetType(), "popup", "alert('Business Operation Files are not Generated!'); window.location ='MemberHomePage.aspx';", true);
     

当条件满足时,我无法显示弹出窗口。任何帮助将不胜感激。

【问题讨论】:

我认为这应该可以工作,除非您想在部分回发时显示弹出窗口或弹出模型的 ID 已更改。检查您的模型 ID 那个JavaScript函数openModal(message, header, url)触发了吗? 是的,我正在通过 javascript 触发。 【参考方案1】:

div 表示模态在服务器上运行,因此 ASP.NET 生成它的 ID。这意味着,当页面被渲染时,modal 的 ID 不是myModal,而是类似于ctl00_Content2_myModal

因此,jQuery 无法在线找到您的 div

$('#myModal').modal('show');

将该行更改为

$('#<%= myModal.ClientId %>').modal('show');

或尝试通过类名访问div,例如$(".modal")

编辑: 您尝试通过 ID 查找的其他控件也会遇到同样的问题,例如 lblMasterMessagelblMasterbodyMessage 等。

【讨论】:

【参考方案2】:

你可以试试这个

// add this code below your javascript function

openModal('<%=message %>', '<%=header %>', 'MemberHomePage.aspx');

【讨论】:

这个具体放在哪里以及如何传递参数? 你可以在javascript函数下面添加上面的代码,并在那里打印你的messageheader变量 但我想从服务器端传递消息

以上是关于使用c#从服务器端打开页面加载事件的模式弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从 aspx 页面传递到 ascx 模式弹出窗口?

使用引导程序加载打开模式弹出窗口?

c#,如何弹出一个显示在最前面但没有焦点的窗口?谢谢!

asp.net网页中如何弹出FORM窗体

如何从appdelegate打开弹出窗口?

使用模态弹出窗口在另一个 aspx 页面中显示 aspx 页面