Что вы подозреваете, когда ASP.NET игнорирует CustomValidator?

Это такая же проблема обслуживания кода, как и проблема кода, но у меня есть веб-форма, которая больше не проверяет ее CustomValidator. Это сработало, когда я последний раз касался кода более года назад, но теперь он больше не работает, когда пользователь запросил некоторые изменения ...

WebForm содержит раскрывающийся список с привязкой к данным с элементом по умолчанию «- All -» со значением String.Empty. Когда пользователь нажимает кнопку отправки, валидатор должен проверить, не является ли значение раскрывающегося списка String.Empty. Я установил точки останова в коде проверки клиента и коде проверки сервера, но ни одна из них не сработала.

С чего бы вы начали искать? Какие обычные подозреваемые? Я, конечно, сравнивал свою рабочую копию с тем, что находится в системе управления версиями, но ничего подозрительного не выскакивает.

На всякий случай вот мой код:

<asp:DropDownList ID = "_AssessmentDropDown" runat = "server" DataSourceID = "_AssessmentsData" CausesValidation = "true" AutoPostBack = "false"
    DataTextField = "AssessmentName" DataValueField = "AssessmentName" OnDataBound = "_HandleAssessmentsBound">
</asp:DropDownList>
<asp:CustomValidator ID = "_AssessmentValidator" runat = "server" ClientValidationFunction = "_HandleValidateAssessment_Client"
    ControlToValidate = "_AssessmentDropDown" ErrorMessage = "* You must select an Assessment."
    OnServerValidate = "_HandleValidateAssessment" />
<asp:ObjectDataSource ID = "_AssessmentsData" runat = "server"
    OldValuesParameterFormatString = "original_{0}" SelectMethod = "GetData"
    TypeName = "DataTableAdapters.GET_GRADE_ASSESSMENTSTableAdapter">
    <SelectParameters>
      <asp:ControlParameter Name = "GRADECODE" ControlID = "_GradeCodeDropDown" PropertyName = "SelectedValue" />
    </SelectParameters>
</asp:ObjectDataSource>
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 235
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Некоторые шаги по устранению неполадок:

  • Это единственный валидатор в форме?
  • Включена ли проверка на странице?
  • Включена ли проверка для целевого элемента управления?
  • Включен ли сам валидатор?

Я бы серьезно посмотрел на ValidationGroup.

Если что-то было исключено из группы, это больше не будет проверяться. В противном случае убедитесь, что у вас нет ошибок javascript (на стороне клиента) и что у метода «OnServerValidate» есть точка останова внутри.

Находится ли валидатор в той же группе валидаторов, что и кнопка отправки?

Ответ принят как подходящий

Я заметил пару проблем

  • Я не думаю, что вам нужно CausesValidation = true, если для AutoPostBack установлено значение false.
  • Вы не используете группы проверки, поэтому это не может быть причиной
  • Почему бы не использовать RequiredFieldValidator?
  • Если вы хотите активировать проверку пустых полей, установите для свойства ValidateEmptyText значение true.

ValidateEmptyText делает свое дело, но мне интересно, почему в прошлом году это не было проблемой. Изменилось ли поведение ValidateEmptyText? В противном случае мое значение по умолчанию должно быть изменено.

flipdoubt 11.11.2008 22:54

Большое спасибо, ValidateEmptyText тоже вызывал мою проблему.

JoshBaltzell 13.04.2009 23:39

Спасибо, свойство ValidateEmptyText тоже вызывало у меня проблему.

Maarten Kieft 14.05.2012 14:25

CustomValidator не срабатывает, если проверяемый элемент управления имеет пустое значение, поэтому CustomValidator всегда должен сопровождаться RequiredFieldValidator.

Другие вопросы по теме