【问题标题】:Closing bootstrap modal from server if validation passes如果验证通过,则从服务器关闭引导模式
【发布时间】:2014-02-15 22:56:40
【问题描述】:

简单地说,我希望在我的引导模式中为我的按钮触发 ASP 验证。如果验证触发,我希望它们在没有模式关闭的情况下出现。如果验证没有触发,模态将正常关闭。

我已经为此检查了很多解决方案,但我认为我还没有找到一个非常有效的解决方案。我想在引导模式中的一个文本框上使用 ASP 验证。如果我的按钮上有 data-dismiss="modal" ,即使验证触发,模式也会关闭。

在我看来,如果我可以从服务器端关闭模态框,效果会更好。但我不确定是否有更好的解决方案。这是我的页脚客户端代码:

   <div class="modal-footer">  
        <asp:Button runat="server" ID="SubmitMessageBtn" Text="Send" class="btn btn-success" OnClick="SubmitMessageBtn_Click" UseSubmitBehavior="false" data-dismiss="modal" />
        <a href="#" class="btn" data-dismiss="modal">Close</a>  
    </div>  

这是我在服务器端尝试过的:

 protected void SubmitMessageBtn_Click(object sender, EventArgs e)
    {
        //if validation passes
        if (Page.IsValid)
        {

            ClientScript.RegisterStartupScript(GetType(), "Hide", "<script> $('#messageUserModal').modal('hide');</script>");
        }
    }

【问题讨论】:

    标签: asp.net validation twitter-bootstrap modal-dialog


    【解决方案1】:

    没关系,我在这里发现了问题: Open Bootstrap Modal from code-behind

    显然如果它在更新面板中它不起作用

    【讨论】:

      【解决方案2】:

      即使这是一个较旧的线程。 RegisterStartUp 将在 init 之前注册脚本。尝试使用类似

      ScriptManager.RegisterClientScriptBlock(this.Page, GetType(), "HideLoginDialog", "<script> $('#login-dialog').modal('hide');</script>", false);
      

      标记应该看起来像

      <div id="login-dialog" class="modal fade" tabindex="-1">
      ...
                  <div class="modal-footer text-center">
                          <asp:UpdatePanel runat="server" ID="up_login">
                              <ContentTemplate>
                                  <asp:Button runat="server" ID="login" OnClick="login_Click" type="button" class="btn btn-primary" Text="Login"></asp:Button>
                                  <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                              </ContentTemplate>
                          </asp:UpdatePanel>
                  </div>
      ...
      </div>
      

      后面的代码会是这样的

      protected void login_Click(object sender, EventArgs e)
      {
          CloseModalServerEvent();
      }
      
      protected void CloseModalServerEvent()
      {
          ScriptManager.RegisterClientScriptBlock(this.Page, GetType(), "HideLoginDialog", "<script> $('#login-dialog').modal('hide');</script>", false);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-26
        • 1970-01-01
        • 1970-01-01
        • 2019-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多