0

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

WebForm には、値として String.Empty を持つデフォルトの「 - All -」項目を持つデータ バインド ドロップダウンが含まれています。ユーザーが送信ボタンをクリックすると、バリデーターはドロップダウンの値が 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>
4

5 に答える 5

5

いくつかの問題に気付きました

  • AutoPostBack が false に設定されている場合、CausesValidation=true は必要ないと思います
  • 検証グループを使用していないため、それが原因ではありません
  • RequiredFieldValidator を使用しないのはなぜですか?
  • 空のフィールドで検証を開始する場合は、ValidateEmptyText プロパティを true に設定します。
于 2008-11-11T19:44:41.127 に答える
1

検証しているコントロールの値が空の場合、CustomValidator は起動しないため、CustomValidator には常に RequiredFieldValidator を付随させる必要があります。

于 2008-11-11T19:52:19.473 に答える
0

トラブルシューティングの手順:

  • これはフォーム上の唯一のバリデータですか?
  • ページで検証が有効になっていますか?
  • 対象となるコントロールの検証は有効になっていますか?
  • バリデータ自体は有効になっていますか?
于 2008-11-11T19:38:08.440 に答える
0

ValidationGroup を真剣に検討します。

何かがグループから除外された場合、それはもはや検証されません。それ以外の場合は、(クライアント側の) javascript エラーがないこと、および「OnServerValidate」メソッドの内部にブレーク ポイントがあることを確認してください。

于 2008-11-11T19:38:31.653 に答える
0

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

于 2008-11-11T19:38:37.503 に答える