嗨,我正在开发自定义表单字段验证器,似乎自定义验证器正在工作,不允许它继续到下一页,但它不会更新验证摘要,也不会显示星号和我的标签已经看得见了。我在同一个字段上还有其他验证器,例如RequiredFieldValidator。我的 ValidationGroup 已设置,Text 和 IsValid 也是如此。正如一些解决方法所建议的那样,我什至在 javascript 中编写并设置了一个虚拟客户端验证方法。
这是asp.net中的验证摘要代码
<asp:ValidationSummary ID="ValidatorSummary" runat="server" ValidationGroup="Step2" />
这是自定义验证器和必填字段之一
<asp:CustomValidator ID="AddressVerification" runat="server" ErrorMessage="Please enter a valid address." Display="Dynamic" ValidationGroup="Step2" OnServerValidate="AddressVerification_ServerValidate" ClientValidationFunction="CustomValidatorDummy" Text="*" Enabled="true" EnableClientScript="true"></asp:CustomValidator>
<asp:RequiredFieldValidator ID="RFValidatorHomeAddress" runat="server" ErrorMessage="Please enter home address." Text="*" Display="Dynamic" ValidationGroup="Step2" ControlToValidate="txtHomeAddress"></asp:RequiredFieldValidator>
这是后面代码中的自定义验证方法
protected void AddressVerification_ServerValidate(object sender, ServerValidateEventArgs e)
{
//lets just say it doesn't validate and sets the IsValid to false
lblUspsValidatorResHomeCity.Visible = true;
lblUspsValidatorResHomeState.Visible = true;
lblUspsValidatorResHomeZip.Visible = true;
e.IsValid = false;
}
请指教,谢谢。
编辑:已回答 - 正如按位提到的那样。验证摘要也应该放在更新面板中。谢谢!
像这样:
<asp:UpdatePanel ID="UpdatePanelValidationSummaryHome" ChildrenAsTriggers="false" UpdateMode="Conditional"
runat="server">
<ContentTemplate>
<asp:ValidationSummary ID="AddressHomeValidationSummary" runat="server" ValidationGroup="AddressHomeValidationGroup"
CssClass="errors" />
</ContentTemplate>
然后调用更新:
UpdatePanelValidationSummaryHome.Update();