自定义验证器不会触发

时间:2009-09-18 11:01:11

标签: asp.net customvalidator

我有以下代码。当我按下保存按钮时,三个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>

2 个答案:

答案 0 :(得分:1)

我修好了。

自定义验证器控件是服务器端检查,因此其他验证器(客户端)首先执行。这有点误导,因为validationsummary控件通常会显示所有验证器错误。

假设名称,电子邮件等有效,那么它才会提交给服务器并提出验证错误。

答案 1 :(得分:1)

没错。这就是它的工作方式。如果您希望自定义验证器也可以在浏览器中工作,则需要在JavaScript中实现自定义验证,并在控件的ClientValidationFunction属性中定义方法。然后它将在验证摘要中显示客户端错误。