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

StackOverflow https://stackoverflow.com/questions/281914

Вопрос

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

Веб-форма содержит раскрывающийся список с привязкой к данным и элементом по умолчанию «- 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>
Это было полезно?

Решение

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top