質問

これはコードの問題と同じくらいコードのメンテナンスの問題ですが、CustomValidatorをチェックしないWebFormがあります。 1年以上前にコードに最後に触れたときは機能していましたが、ユーザーがいくつかの変更を要求したため、機能しなくなりました...

WebFormには、デフォルトの"のデータバインドドロップダウンが含まれています。 -すべて-" 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>
役に立ちましたか?

解決

いくつかの問題に気づいた

  • AutoPostBackがfalseに設定されている場合、CausesValidation = trueは必要ないと思います
  • 検証グループを使用しないため、それが原因ではない
  • RequiredFieldValidatorを使用しない理由
  • 空のフィールドで検証を実行する場合は、ValidateEmptyTextプロパティをtrueに設定します

他のヒント

検証中のコントロールに空の値がある場合、CustomValidatorは起動しません。したがって、CustomValidatorには必ずRequiredFieldValidatorを含める必要があります

いくつかのトラブルシューティング手順:

  • これはフォーム上の唯一のバリデーターですか?
  • ページで検証が有効になっていますか?
  • ターゲットコントロールの検証は有効になっていますか?
  • バリデーター自体は有効ですか?

ValidationGroupを真剣に検討します。

グループに何かが残されている場合、それはもはや検証されません。それ以外の場合は、javascriptエラー(クライアント側)が発生していないこと、および&quot; OnServerValidate&quot;メソッドが内部にブレークポイントがあります。

バリデータは送信ボタンと同じバリデータグループにありますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top