Что вы подозреваете, когда ASP.NET игнорирует CustomValidator? - PullRequest
0 голосов
/ 11 ноября 2008

Это такая же проблема обслуживания кода, как и проблема кода, но у меня есть WebForm, которая больше не проверяет его 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>

Ответы [ 5 ]

5 голосов
/ 11 ноября 2008

замечаю пару вопросов

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

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

0 голосов
/ 11 ноября 2008

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

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

0 голосов
/ 11 ноября 2008

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

0 голосов
/ 11 ноября 2008

Некоторые действия по устранению неполадок:

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