ASP.NET忽略CustomValidator时您怀疑什么?

fli*_*ubt 0 asp.net validation maintenance webforms

这与代码问题一样是代码维护问题,但我有一个不再检查它的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>
Run Code Online (Sandbox Code Playgroud)

dev*_*vio 5

我注意到了一些问题

  • 如果AutoPostBack设置为false,我认为您不需要CausesValidation = true
  • 您不使用验证组,因此不能成为原因
  • 为什么不使用RequiredFieldValidator?
  • 如果要在空字段上触发验证,请将ValidateEmptyText属性设置为true