Open Bootstrap Modal from code-behind

后端 未结 7 2075
梦谈多话
梦谈多话 2020-12-13 18:18

Anyone knows how to open a twitter bootstrap modal, from code behind?

I want to open the modal based on some requeriment at the moment of the save. Something like \"

相关标签:
7条回答
  • 2020-12-13 18:48

    FYI,

    I've seen this strange behavior before in jQuery widgets. Part of the key is to put the updatepanel inside the modal. This allows the DOM of the updatepanel to "stay with" the modal (however it works with bootstrap).

    0 讨论(0)
  • 2020-12-13 18:53

    By default Bootstrap javascript files are included just before the closing body tag

            <script src="vendors/jquery-1.9.1.min.js"></script>
            <script src="bootstrap/js/bootstrap.min.js"></script>
            <script src="vendors/easypiechart/jquery.easy-pie-chart.js"></script>
            <script src="assets/scripts.js"></script>
     </body>
    

    I took these javascript files into the head section right before the body tag and I wrote a small function to call the modal popup:

        <script src="vendors/jquery-1.9.1.min.js"></script>
        <script src="bootstrap/js/bootstrap.min.js"></script>
        <script src="vendors/easypiechart/jquery.easy-pie-chart.js"></script>
        <script src="assets/scripts.js"></script>
    
     <script type="text/javascript">
        function openModal() {
            $('#myModal').modal('show');
        }
    </script>
    </head>
    <body>
    

    then I could call the modal popup from code-behind with the following:

    protected void lbEdit_Click(object sender, EventArgs e) {   
          ScriptManager.RegisterStartupScript(this,this.GetType(),"Pop", "openModal();", true);
    }
    
    0 讨论(0)
  • 2020-12-13 18:54

    All of the example above should work just add a document ready action and change the order of how you perform the updates to the texts, also make sure your using Script manager alternatively non of this will work for you. Here is the text within the code behind.

    aspx

    <div class="modal fade" id="myModal" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
            <div class="modal-dialog">
                <asp:UpdatePanel ID="upModal" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
                    <ContentTemplate>
                        <div class="modal-content">
                            <div class="modal-header">
                                <h4 class="modal-title"><asp:Label ID="lblModalTitle" runat="server" Text=""></asp:Label></h4>
                                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                            </div>
                            <div class="modal-body">
                                <asp:Label ID="lblModalBody" runat="server" Text=""></asp:Label>
                            </div>
                            <div class="modal-footer">
                                <button class="btn btn-primary" data-dismiss="modal" aria-hidden="true">Close</button>
                            </div>
                        </div>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </div>
        </div>
    

    Code Behind

    lblModalTitle.Text = "Validation Errors";
    lblModalBody.Text = form.Error;
    upModal.Update();
    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "myModal", "$(document).ready(function () {$('#myModal').modal();});", true);
    
    0 讨论(0)
  • 2020-12-13 19:01

    This method of opening the Modal would not display the Modal for me. I found this as a work arround.

    I removed:

     ScriptManager.RegisterStartupScript(this,this.GetType(),"Pop", "openModal();", true);
    

    Than I added an asp:label named lblJavaScript and in code behind call:

    lblJavaScript.Text = "<script language=\"JavaScript\">openModal()</script>";
    

    Now the Modal will display.

    0 讨论(0)
  • 2020-12-13 19:05

    Finally I found out the problem preventing me from showing the modal from code-behind. One must think that it was as easy as register a clientscript that made the opening, like:

    ScriptManager.RegisterClientScriptBlock(this, this.GetType(),"none",
        "<script>$('#mymodal').modal('show');</script>", false);
    

    But this never worked for me.

    The problem is that Twitter Bootstrap Modals scripts don't work at all when the modal is inside an asp:Updatepanel, period. The behaviour of the modals fail from each side, codebehind to client and client to codebehind (postback). It even prevents postbacks when any js of the modal has executed, like a close button that you also need to do some sever objects disposing (for a dirty example)

    I've notified the bootstrap staff, but they replied a convenient "please give us a fail scenario with only plain html and not asp." In my town, that's called... well, Bootstrap not supporting anything more that plain html. Nevermind, using it on asp.

    I thought them to at least looking what they're doing different at the backdrop management, that I found causes the major part of the problems, but... (justa hint there)

    So anyone that has the problem, drop the updatepanel for a try.

    0 讨论(0)
  • 2020-12-13 19:06

    How about doing it like this:

    1) show popup with form

    2) submit form using AJAX

    3) in AJAX server side code, render response that will either:

    • show popup with form with validations or just a message
    • close the popup (and maybe redirect you to new page)
    0 讨论(0)
提交回复
热议问题