问题描述
我遇到一个问题,当附加的下拉列表在更改时进行部分回发时,必填字段验证器会在屏幕上闪烁。
本质上,页面是用户从第一个下拉列表中进行选择并填充第二个下拉列表的一种形式。然后,他们从第二个下拉列表中进行选择。然后,当用户选择了两者时,他们都点击了提交按钮,并验证了两个下拉菜单。
两个下拉菜单都在“提交”按钮使用的验证组中。我已将CausesValidation =“ false”添加到下拉列表中,但验证器仍会闪烁。下面的示例代码...
<form id="form1" runat="server">
<asp:ScriptManager ID="MyAppScriptManager" runat="server"
EnablePartialRendering="true"
EnableCdn="true" />
<div class="chat">
<asp:UpdatePanel ID="NewBookingUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="true" runat="server">
<ContentTemplate>
<div id="FreelancerDiv" class="collapse show">
<div class="card-body">
<div class="form-group">
<div class="input-group">
<asp:DropDownList ID="FreelancerDropDownList" runat="server" AutoPostBack="true"
CausesValidation="false"
class="custom-select form-control form-control-lg">
<asp:ListItem Value=" " Text="Choose the freelancer for your booking." />
<asp:ListItem Value="Good" Text="Good selection." />
</asp:DropDownList>
</div>
<asp:RequiredFieldValidator ID="FreelancerRequired" runat="server" Display="Dynamic"
ControlToValidate="FreelancerDropDownList"
ValidationGroup="RequestBookingValidationGroup"
ErrorMessage=" Required "
CssClass="alert-danger" />
</div>
</div>
</div>
<div id="ServiceDiv" class="collapse show" runat="server">
<div class="card-body">
<div class="form-group">
<div class="input-group">
<asp:DropDownList ID="ServiceDropDownList" runat="server" AutoPostBack="true"
CausesValidation="false"
class="custom-select form-control form-control-lg">
<asp:ListItem Value=" " Text="Choose the service for your booking." />
<asp:ListItem Value="Good" Text="Good selection." />
</asp:DropDownList>
</div>
<asp:RequiredFieldValidator ID="ServiceRequired" runat="server" Display="Dynamic"
ControlToValidate="ServiceDropDownList"
ValidationGroup="RequestBookingValidationGroup"
ErrorMessage=" Required "
CssClass="alert-danger" />
</div>
</div>
</div>
<button id="RequestBooking" runat="server" class="btn btn-lg btn-primary btn-block" type="button" onserverclick="RequestBooking_Click" validationgroup="RequestBookingValidationGroup">
Request Booking
</button>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
解决方法
您可以在回发中(和/或在标记或页面加载事件中)启用或禁用(enabled = true或enabled = false)必需的字段验证器。相信默认情况下已启用它,这就是为什么它被触发的原因。
,@JobesK感谢Enabled = false提示,它对您有所帮助:)
我禁用了标记中的验证器,然后在javascript中的“提交”按钮中启用了验证器...
ValidatorEnable(document.getElementById('<%=FreelancerRequired.ClientID%>'),true);
ValidatorEnable(document.getElementById('<%=ServiceRequired.ClientID%>'),true);
Page_ClientValidate("RequestBookingValidationGroup");