Пользовательский валидатор не срабатывает, даже если текстовое поле не пусто

У меня есть cutomvalidator, textbox.text = 1 и подпрограмма:

1.
asp:TextBox id="tbxNumber" runat="server" MaxLength="100

2.
asp:CustomValidator id="vNumeric" runat="server" ControlToValidate="tbxNumber" Display="None" OnServerValidate="ValidateNumbers2"

3.
Sub ValidateNumbers2(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs)

If Not IsNumeric(args.Value) Then  

  args.IsValid = False

Else

   args.IsValid = True

End If


End Sub

Когда я пытаюсь отлаживать vNumeric.Validate, sub ValidateNumbers2 не срабатывает? Почему?

Идеи? Я трачу слишком много времени на эту маленькую проблему. Мне нужно использовать customvalidator только по некоторым причинам.


person someonewhowillnotbemiss    schedule 30.05.2011    source источник
comment
Когда вы пытались дублировать это после нажатия кнопки «Сохранить» или вызывали метод в коде, вызывая vNumeric.Validate()?   -  person Sarawut Positwinyu    schedule 30.05.2011
comment
после события нажатия кнопки ValidateNumbers2 не срабатывает, как будто ничего не происходит   -  person someonewhowillnotbemiss    schedule 30.05.2011
comment
Вы уже установили CauseValidation на true для этой кнопки и поставили точку останова в начале ValidateNumbers2, верно?   -  person Sarawut Positwinyu    schedule 30.05.2011
comment
Я уже пробовал, но потом ничего не вышло, попробую еще раз.   -  person someonewhowillnotbemiss    schedule 30.05.2011
comment
CauseValidation=True для кнопки или текстового поля также не помогло.   -  person someonewhowillnotbemiss    schedule 30.05.2011


Ответы (2)


если текстовое поле пусто во время тестирования, оно не сработает. вам нужно установить

 ValidateEmptyText="True"

в вашем пользовательском валидаторе.

person ibram    schedule 30.05.2011
comment
Пользовательский валидатор не срабатывает, даже если текстовое поле НЕ ПУСТОЕ - person someonewhowillnotbemiss; 30.05.2011
comment
Вы работаете с панелями обновлений? И вы не работаете с ValidationGroups? - person ibram; 30.05.2011
comment
Работа с updatePanels, но не работа с ValidationGroups - person someonewhowillnotbemiss; 30.05.2011
comment
Иногда у меня были проблемы с панелями обновлений. можно попробовать проверить без панели обновлений. - person ibram; 30.05.2011

Изменили ли вы его режим ClientId, валидаторы могут не поддерживать режим статического идентификатора клиента

Проблема с валидаторами и ClientIDMode (ASP.NET)

////////////////////

Вы можете попробовать использовать Force Validation с помощью Page.Validate();

person Sarawut Positwinyu    schedule 30.05.2011
comment
на вашем месте я попытаюсь создать пустую тестовую страницу и добавить очень простое текстовое поле и проверку сервера. если это сработает, может быть что-то не так с настройкой объекта (я когда-то работал с настраиваемой проверкой в ​​FormView, и это не сработало, вместо этого я использую метку, как в этой теме stackoverflow.com/questions/5880359/ . Если он по-прежнему не работает, возможно, ваш код неверен или это может быть какая-то глобальная настройка. - person Sarawut Positwinyu; 30.05.2011
comment
Если вы спешите/устали и не хотите тратить время впустую, просто используйте вместо этого условие и метку if-else. используя javascipt, чтобы скрыть эту метку при изменении значения в текстовом поле. Это может имитировать внешний вид валидаторов, но это не лучший способ. - person Sarawut Positwinyu; 30.05.2011