如果验证通过,则从服务器关闭引导模式

时间:2014-02-15 22:56:40

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

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

我已经为此检查了很多解决方案,但我认为我找不到一个可行的解决方案。我想在bootstrap模式中的一个文本框上使用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>");
        }
    }

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

即使这是一个较老的线程。 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);
}