【问题标题】:Open modal Popup on pageload event from server side using c#使用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 触发。

标签: javascript c# jquery asp.net twitter-bootstrap


【解决方案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变量
    • 但我想从服务器端传递消息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 2015-08-29
    相关资源
    最近更新 更多