我有以下代码。当我按下保存按钮时,三个requiredfieldvalidators运行正常并且正常工作。但是我的自定义验证器不起作用。它根本不会触发事件。我有标准文本框和验证控件。有什么理由可能无法正常工作吗?
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtForename" Display="None" ErrorMessage="Must enter a valid first name." />
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtSurname" Display="None" ErrorMessage="Must enter a valid last name." />
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtEmail" Display="None" ErrorMessage="Must enter a valid e-mail address." />
<asp:CustomValidator runat="server" OnServerValidate="CheckAtLeastOnePhoneNumber"
ErrorMessage="Must enter at least one phone number." Display="None"
ValidateEmptyText="True" />
<script runat="server">
void CheckAtLeastOnePhoneNumber(Object s, ServerValidateEventArgs e)
{
if (txtMobileNumber.Text.Equals("") &&
txtWorkNumber.Text.Equals("") &&
txtHomeNumber.Text.Equals(""))
{
e.IsValid = false;
}
}
</script>
答案 0 :(得分:1)
我修好了。
自定义验证器控件是服务器端检查,因此其他验证器(客户端)首先执行。这有点误导,因为validationsummary控件通常会显示所有验证器错误。
假设名称,电子邮件等有效,那么它才会提交给服务器并提出验证错误。
答案 1 :(得分:1)
没错。这就是它的工作方式。如果您希望自定义验证器也可以在浏览器中工作,则需要在JavaScript中实现自定义验证,并在控件的ClientValidationFunction属性中定义方法。然后它将在验证摘要中显示客户端错误。