0

次のコードがあります。保存ボタンを押すと、3 つの必須フィールドバリデーターが正常に動作し、適切に動作します。ただし、カスタム バリデータは機能しません。イベントはまったく発生しません。標準のテキスト ボックスと validationsummary コントロールがあります。機能しない理由はありますか?

<asp:RequiredFieldValidator runat="server" ControlToValidate="txtForename" Display="None" ErrorMessage="Must enter a valid first name." />
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtSurname" Display="None" ErrorMessage="Must enter a valid last name." />
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtEmail" Display="None" ErrorMessage="Must enter a valid e-mail address." />

<asp:CustomValidator runat="server" OnServerValidate="CheckAtLeastOnePhoneNumber" 
        ErrorMessage="Must enter at least one phone number." Display="None" 
        ValidateEmptyText="True" />

<script runat="server">
    void CheckAtLeastOnePhoneNumber(Object s, ServerValidateEventArgs e)
    {
        if (txtMobileNumber.Text.Equals("") &&
            txtWorkNumber.Text.Equals("") &&
            txtHomeNumber.Text.Equals(""))
        {
            e.IsValid = false;
        }
    }
</script>
4

2 に答える 2

1

それを私が直した。

カスタム バリデータ コントロールはサーバー側のチェックであるため、他のバリデータ (クライアント側) が最初に実行されます。通常、validationsummary コントロールにはすべてのバリデータ エラーが表示されるため、これは少し誤解を招く可能性があります。

名前、電子メールなどが有効であると仮定すると、サーバーに送信され、検証エラーが発生します。

于 2009-09-18T11:28:25.883 に答える
1

それは正しい。それが仕組みです。カスタム バリデーターをブラウザーでも動作させるには、JavaScript でカスタム バリデーションを実装し、コントロールの ClientValidationFunction プロパティでメソッドを定義する必要があります。次に、検証の概要にクライアント側のエラーが表示されます。

于 2011-04-30T14:27:52.760 に答える