0

これは多くの質問が寄せられていることは知っていますが、サーバー側のカスタムバリデーターが起動されていないため、理由がわかりません(また、他の場所で機能する例をコピーして、機能させることができません... )。

コード:

<asp:CustomValidator ID="MyValidator" runat="server" ErrorMessage="My error message" OnServerValidate="MyValidator_OnServerValidate" />

機能の検証

    Protected Sub MyValidator_OnServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles MyValidator.ServerValidate
    Dim i As Integer
    i = 0
    args.IsValid = False
End Sub

これは私が行っている最後のテストです(他の質問からコピー)が、バリデーターを1つのコントロールにアタッチ(およびValidateEmptyTextを追加)し、を削除handles MyValidator.ServerValidateしてタグに追加しようとしましたonServerValidate

(私は通常Javaプログラマーなので、これは私が見たはずの非常に基本的なエラーである可能性があります。私の.Netの無知を過小評価しないでください)

前もって感謝します

編集:送信ボタンのコードを追加します...

<asp:Button ID="lbGuardar" runat="server" CssClass="button" Text="Guardar" CausesValidation="true" ></asp:Button>

編集2:ボタンコードにを追加しましたPage.validate()が、バリデーターのサーバー側を呼び出しません。また、カスタムバリデーターが呼び出されています(少なくともそのクライアント/ javascript側ですが、サーバー側ではありません)

4

3 に答える 3

1

それを機能させることができませんでした。カスタムバリデーターを削除し、ロジック内で検証を行いました。

于 2011-05-25T14:56:13.167 に答える
1

パブリックメソッドである必要があり、ハンドルは必要ありません。

Public Sub MyValidator_OnServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs)

    Dim i As Integer
    i = 0
    args.IsValid = False

End Sub
于 2011-05-16T16:28:15.410 に答える
1

頭のてっぺんから、ProtectedSubをPublicSubに変更してみます。

編集:私はちょうどあなたのコードをテストしました、そしてあなたが持っているものは私のために働きます。デバッグに入り、最初にMyValidator.ServerValidateに入った場所にポストバックするボタンをクリックしました。ページが無効になり、エラーメッセージが表示されます。

于 2011-05-16T16:18:55.860 に答える