RequiredFieldValidator 阻止 bootstrap 模式弹出

RequiredFieldValidator blocks the bootstrap modal pop up

我有一个按钮

 <button type="button" class="btn btn-primary horizontal-bar" id="btnAdd" runat="server" onserverclick="btnAdd_ServerClick">
            Add
        </button>

调用方法

  protected void btnAdd_ServerClick(object sender, EventArgs e)
    {
        ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), "script", "<script type='text/javascript'>$( document ).ready(function() { $('#GaragesModal').modal('show')});</script>", false);
    }

应该打开模式

<div class="modal fade" id="GaragesModal">
    <div class="modal-dialog small">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title">Garages</h4>
            </div>
            <div class="modal-body">
                <div class="form-horizontal">
                    <div class="form-group">
                        <label for="txtName" class="col-sm-2 control-label">Name</label>
                        <div class="col-sm-10">                             
                            <asp:TextBox ID="txtName" runat="server" OnTextChanged="txtName_TextChanged" CssClass="form-control"></asp:TextBox>
                            <asp:RegularExpressionValidator runat="server" ControlToValidate="txtName" ValidationExpression="^[a-zA-Z ]*$" ErrorMessage="Name required" ForeColor="#ff0000" />
                            <asp:RequiredFieldValidator ErrorMessage="errormessage" ControlToValidate="txtName" runat="server" />
                        </div>
                    </div>...(closing tags)

问题是当我将 asp:RequiredFieldValidator 添加到代码中所示的文本框时,方法 btnAdd_ServerClick 单击按钮时不会触发。 asp:RegularExpressionValidator 工作正常。知道为什么会这样以及验证必填字段的任何其他方式。提前谢谢你。

您需要将模态弹出窗口中的验证器仅与模态弹出窗口中的按钮连接起来,现在验证器也与 Add 按钮连接。您可以通过为验证器和模式弹出窗口中的按钮分配 ValidationGroup 来完成此操作。不要为 Add 按钮提供任何 ValidationGroup,因为它只会打开弹出窗口。

您没有在模式弹出窗口中显示按钮,但我相信您有一个。请将该按钮的 ValidationGroup 设置为与验证器相同的值。

不要为 Add 按钮提供任何验证组并将其 CausesValidation 属性 设置为 false。

<asp:RegularExpressionValidator runat="server" ControlToValidate="txtName"
   ValidationExpression="^[a-zA-Z ]*$" ErrorMessage="Name required"
   ForeColor="#ff0000" ValidationGroup="Save"/>
<asp:RequiredFieldValidator ErrorMessage="errormessage" 
  ControlToValidate="txtName" runat="server" ValidationGroup="Save"/>