Пользовательский валидатор не срабатывает - PullRequest
0 голосов
/ 18 сентября 2009

У меня есть следующий код. Когда я нажимаю кнопку «Сохранить», три требуемых полевых валидатора работают нормально и работают правильно. Однако мой пользовательский валидатор не работает. Это не запускает событие вообще. У меня есть стандартные текстовые поля и валидация. Есть ли причина, по которой он может не работать?

<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 ]

1 голос
/ 30 апреля 2011

Это верно. Вот как это работает. Если вы хотите, чтобы пользовательский валидатор также работал в браузере, вам нужно реализовать свою пользовательскую валидацию в JavaScript и определить метод в свойстве элемента управления ClientValidationFunction. Затем он будет отображаться с ошибками на стороне клиента в сводке проверки.

1 голос
/ 18 сентября 2009

Я исправил это.

Пользовательский элемент управления валидатора является проверкой на стороне сервера, и поэтому другие валидаторы (которые на стороне клиента) выполняются первыми. Это немного вводит в заблуждение, поскольку элемент управления validationsummary обычно отображает все ошибки валидатора.

При условии, что имя, адрес электронной почты и т. Д. Были действительными, только тогда они будут отправлены на сервер и обнаружат ошибку проверки.

...