Freigeben über


CustomValidator-Klasse

Führt eine benutzerdefinierte Validierung eines Eingabesteuerelements durch.

Namespace: System.Web.UI.WebControls
Assembly: System.Web (in system.web.dll)

Syntax

'Declaration
Public Class CustomValidator
    Inherits BaseValidator
'Usage
Dim instance As CustomValidator
public class CustomValidator : BaseValidator
public ref class CustomValidator : public BaseValidator
public class CustomValidator extends BaseValidator
public class CustomValidator extends BaseValidator

Hinweise

Mit dem CustomValidator-Steuerelement können Sie eine benutzerdefinierte Validierungsfunktion für ein Eingabesteuerelement bereitstellen. Das CustomValidator-Steuerelement ist ein anderes Steuerelement als das von ihm validierte Eingabesteuerelement. Daher können Sie festlegen, wo die Validierungsmeldung angezeigt wird.

Validierungsteuerelemente führen Validierungen immer auf dem Server durch. Sie verfügen außerdem über vollständige Clientimplementierung, sodass skriptfähige Browser (z. B. Microsoft Internet Explorer, Version 4.0 oder höher) die Validierung auf dem Client durchführen können. Die Validierung auf dem Client verbessert den Validierungsprozess, indem Benutzereingaben vor dem Senden an den Server überprüft werden. Auf diese Weise werden Fehler auf dem Client vor dem Senden des Formulars entdeckt, wodurch die für die Validierung auf dem Server erforderliche Informationsschleife vermieden wird.

Zum Erstellen einer serverseitigen Validierungsfunktion geben Sie einen Handler für das ServerValidate-Ereignis an, das die Validierung durchführt. Auf die zu validierende Zeichenfolge des Eingabesteuerelements kann über die Value-Eigenschaft des ServerValidateEventArgs-Objekts zugegriffen werden, die als Parameter an den Ereignishandler übergeben wird. Das Ergebnis der Validierung wird dann in der IsValid-Eigenschaft des ServerValidateEventArgs-Objekts gespeichert.

Zum Erstellen einer clientseitigen Validierungsfunktion fügen Sie zuerst die oben beschriebene serverseitige Validierungsfunktion hinzu. Fügen Sie dann die clientseitige Validierungsskriptfunktion zur ASP.NET-Seite (ASPX) hinzu.

Wenn Sie VBScript (Visual Basic Scripting Edition) verwenden, muss die Funktion folgendes Format aufweisen:

 Sub ValidationFunctionName(source, arguments)

Wenn Sie JScript verwenden, muss die Funktion folgendes Format aufweisen:

 function ValidationFunctionName(source, arguments)

Mit der ClientValidationFunction-Eigenschaft geben Sie den Namen der clientseitigen Validierungsskriptfunktion an, die dem CustomValidator-Steuerelement zugeordnet ist. Da die Skriptfunktion auf dem Client ausgeführt wird, muss sie in einer vom Zielbrowser unterstützten Sprache geschrieben sein, z. B. in VBScript oder JScript.

Wie bei der serverseitigen Validierung erfolgt der Zugriff auf die zu validierende Zeichenfolge des Eingabesteuerelements über die Value-Eigenschaft des arguments-Parameters. Das Ergebnis der Validierung wird durch Festlegen der IsValid-Eigenschaft des arguments-Parameters zurückgegeben.

Warnung

Wenn Sie Validierungssteuerelemente verwenden, müssen Sie vor dem Ausführen jedes Verarbeitungsvorgangs immer die Ergebnisse der serverseitigen Validierung überprüfen. Nach einem Postback, jedoch vor dem Aufruf der Ereignismethoden, ruft die Seite die Validierungssteuerelemente auf und aggregiert ihre Ergebnisse in die Page.IsValid-Eigenschaft. (Sie können die Validierungssteuerelemente auch explizit mit der Validate-Methode aufrufen.) Im eigenen Code müssen Sie sicherstellen, dass die Page.IsValid-Eigenschaft vor dem Verarbeiten von Eingaben true zurückgibt. Auch wenn Browser mit Skriptaktivierung möglicherweise bei fehlgeschlagener Validierungsüberprüfung die Ausführung eines Postbacks auf dem Client verhindern, sollten Sie vor dem Verarbeiten validierter Daten auch immer Page.IsValid im Servercode überprüfen.

Mit einem einzelnen Eingabesteuerelement können mehrere Validierungssteuerelemente verwendet werden, um verschiedene Kriterien zu überprüfen. Sie können z. B. mehrere Validierungssteuerelemente auf ein TextBox-Steuerelement anwenden, mit dem der Benutzer die einem Warenkorb hinzuzufügende Artikelanzahl eingeben kann. Mithilfe eines CustomValidator-Steuerelements können Sie sicherstellen, dass der angegebene Wert niedriger als die Bestandsmenge ist. Mithilfe eines RequiredFieldValidator-Steuerelements stellen Sie sicher, dass der Benutzer im TextBox-Steuerelement einen Wert eingibt.

Hinweis

Wenn das Eingabesteuerelement leer ist, werden keine Validierungsfunktionen aufgerufen, und die Validierung wird erfolgreich durchgeführt. Verwenden Sie ein RequiredFieldValidator-Steuerelement, um den Benutzer zum Eingeben von Daten in das Eingabesteuerelement aufzufordern.

Es ist möglich, das CustomValidator-Steuerelement zu verwenden, ohne die ControlToValidate-Eigenschaft festzulegen. Dies wird normalerweise beim Validieren mehrerer Eingabesteuerelemente oder beim Validieren von Eingabesteuerelementen angewendet, die nicht mit den Validierungssteuerelementen verwendet werden können, z. B. beim CheckBox-Steuerelement. In diesem Fall enthält die Value-Eigenschaft des arguments-Parameters, der an den Ereignishandler für das ServerValidate-Ereignis und an die clientseitige Validierungsfunktion übergeben wird, immer eine leere Zeichenfolge (""). Dennoch werden diese Validierungsfunktionen ggf. aufgerufen, um die Gültigkeit sowohl auf dem Server als auch auf dem Client zu überprüfen. Um auf den zu validierenden Wert zuzugreifen, müssen Sie programmgesteuert auf das zu validierende Eingabesteuerelement verweisen und dann den Wert aus der betreffenden Eigenschaft abrufen. Wenn Sie z. B. ein CheckBox-Steuerelement auf dem Server validieren möchten, dürfen Sie die ControlToValidate-Eigenschaft des Validierungssteuerelements nicht festlegen. Verwenden Sie den folgenden Code für den Handler für das ServerValidate-Ereignis.

Sub ServerValidation (source As object, args As ServerValidateEventArgs)
    args.IsValid = (CheckBox1.Checked = True)
 End Sub
void ServerValidation (object source, ServerValidateEventArgs args)
 {
    args.IsValid = (CheckBox1.Checked == true);
 }

Weitere Informationen zu Validierungssteuerelementen finden Sie unter BaseValidator.

Eingabehilfen

Das für dieses Steuerelement standardmäßig wiedergegebene Markup entspricht eventuell nicht den Standards für die Eingabehilfen wie beispielsweise den Richtlinien der Web Content Accessibility Guidelines 1.0 (WCAG) mit der Priorität 1. Details über die Unterstützung von Eingabehilfen für dieses Steuerelement finden Sie unter Steuerelemente und Eingabehilfen von ASP.NET.

Thema Position
Exemplarische Vorgehensweise: Validieren der Benutzereingabe in einer Web Forms-Seite Erstellen von ASP.NET-Webanwendungen in Visual Studio
Exemplarische Vorgehensweise: Validieren der Benutzereingabe in einer Web Forms-Seite Erstellen von Anwendungen mit Visual Web Developer
Gewusst wie: Validierung anhand von Werten in einer Datenbank für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Validierung anhand eines Wertebereichs für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Validierung anhand eines bestimmten Werts für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Validierung anhand eines Datentyps für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Angeben des Layouts für direkte Meldungen in ASP.NET-Serversteuerelementen Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Validierung erforderlicher Einträge für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Anzeigen von benutzerdefinierten Validierungsmeldungen des Servers für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Programmgesteuertes Testen der Validierung für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Validierung anhand von Mustern für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Programmgesteuertes Validieren für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Formatieren von Validierungsfehlermeldungen für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Validierung mit einer benutzerdefinierten Funktion für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Deaktivieren der Validierung für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Validierung anhand von Werten in einer Datenbank für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Validierung anhand eines Wertebereichs für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Validierung anhand eines bestimmten Werts für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Validierung anhand eines Datentyps für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Angeben des Layouts für direkte Meldungen in ASP.NET-Serversteuerelementen Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Validierung erforderlicher Einträge für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Anzeigen von benutzerdefinierten Validierungsmeldungen des Servers für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Programmgesteuertes Testen der Validierung für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Validierung anhand von Mustern für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Programmgesteuertes Validieren für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Formatieren von Validierungsfehlermeldungen für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Validierung mit einer benutzerdefinierten Funktion für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Deaktivieren der Validierung für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Validierung anhand von Werten in einer Datenbank für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen
Gewusst wie: Validierung anhand eines Wertebereichs für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen
Gewusst wie: Validierung anhand eines bestimmten Werts für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen
Gewusst wie: Validierung anhand eines Datentyps für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen
Gewusst wie: Angeben des Layouts für direkte Meldungen in ASP.NET-Serversteuerelementen Erstellen von ASP.NET-Webanwendungen
Gewusst wie: Validierung erforderlicher Einträge für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen
Gewusst wie: Anzeigen von benutzerdefinierten Validierungsmeldungen des Servers für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen
Gewusst wie: Programmgesteuertes Testen der Validierung für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen
Gewusst wie: Validierung anhand von Mustern für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen
Gewusst wie: Programmgesteuertes Validieren für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen
Gewusst wie: Formatieren von Validierungsfehlermeldungen für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen
Gewusst wie: Validierung mit einer benutzerdefinierten Funktion für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen
Gewusst wie: Deaktivieren der Validierung für ASP.NET-Serversteuerelemente Erstellen von ASP.NET-Webanwendungen

Beispiel

Das folgende Beispiel veranschaulicht das Erstellen eines serverseitigen CustomValidator-Steuerelements.

<%@ Page Language="VB" AutoEventWireup="True" %>

<html>
<head>

   <script runat="server">

      Sub ValidateBtn_OnClick(sender As Object, e As EventArgs) 

         ' Display whether the page passed validation.
         If Page.IsValid Then 

            Message.Text = "Page is valid."

         Else 

            Message.Text = "Page is not valid!"

         End If

      End Sub

      Sub ServerValidation(source As Object, args As ServerValidateEventArgs)

         Try 

            ' Test whether the value entered into the text box is even.
            Dim num As Integer = Integer.Parse(args.Value)
            args.IsValid = ((num mod 2) = 0)
 
         Catch ex As Exception
         
            args.IsValid = false

         End Try

      End Sub

   </script>    

</head>
<body>

   <form runat="server">
  
      <h3>CustomValidator ServerValidate Example</h3>

      <asp:Label id="Message"
           Text="Enter an even number:" 
           Font-Name="Verdana" 
           Font-Size="10pt" 
           runat="server" />

      <p>

      <asp:TextBox id="Text1" 
           runat="server" />
    
      &nbsp;&nbsp;

      <asp:CustomValidator id="CustomValidator1"
           ControlToValidate="Text1"
           Display="Static"
           ErrorMessage="Not an even number!"
           ForeColor="green"
           Font-Name="verdana" 
           Font-Size="10pt"
           OnServerValidate="ServerValidation"
           runat="server"/>

      <p>
 
      <asp:Button id="Button1"
           Text="Validate" 
           OnClick="ValidateBtn_OnClick" 
           runat="server"/>

   </form>
  
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="True" %>

<html>
<head>

   <script runat="server">

      void ValidateBtn_OnClick(object sender, EventArgs e) 
      { 

         // Display whether the page passed validation.
         if (Page.IsValid) 
         {

            Message.Text = "Page is valid.";

         }

         else 
         {

            Message.Text = "Page is not valid!";

         }

      }

      void ServerValidation(object source, ServerValidateEventArgs args)
      {

         try 
         {

            // Test whether the value entered into the text box is even.
            int i = int.Parse(args.Value);
            args.IsValid = ((i%2) == 0);

         }

         catch(Exception ex)
         {

            args.IsValid = false;

         }

      }

   </script>    

</head>
<body>

   <form runat="server">
  
      <h3>CustomValidator ServerValidate Example</h3>

      <asp:Label id="Message"  
           Text="Enter an even number:" 
           Font-Name="Verdana" 
           Font-Size="10pt" 
           runat="server"/>

      <p>

      <asp:TextBox id="Text1" 
           runat="server" />
    
      &nbsp;&nbsp;

      <asp:CustomValidator id="CustomValidator1"
           ControlToValidate="Text1"
           Display="Static"
           ErrorMessage="Not an even number!"
           ForeColor="green"
           Font-Name="verdana" 
           Font-Size="10pt"
           OnServerValidate="ServerValidation"
           runat="server"/>

      <p>
 
      <asp:Button id="Button1"
           Text="Validate" 
           OnClick="ValidateBtn_OnClick" 
           runat="server"/>

   </form>
  
</body>
</html>

Das folgende Beispiel veranschaulicht das Erstellen eines clientseitigen CustomValidator-Steuerelements.

<%@ Page Language="VB" AutoEventWireup="True" %>

<html>
<head>

   <script runat="server">

      Sub ValidateBtn_OnClick(sender As Object, e As EventArgs) 

         ' Display whether the page passed validation.
         If Page.IsValid Then 

            Message.Text = "Page is valid."

         Else 

            Message.Text = "Page is not valid!"

         End If

      End Sub

      Sub ServerValidation(source As Object, args As ServerValidateEventArgs)

         Try 

            ' Test whether the value entered into the text box is even.
            Dim num As Integer = Integer.Parse(args.Value)
            args.IsValid = ((num mod 2) = 0)
 
         Catch ex As Exception
         
            args.IsValid = false

         End Try

      End Sub

   </script>      

</head>
<body>

   <form runat="server">
  
      <h3>CustomValidator ServerValidate Example</h3>

      <asp:Label id="Message"  
           Text="Enter an even number:" 
           Font-Name="Verdana" 
           Font-Size="10pt" 
           runat="server"/>

      <p>

      <asp:TextBox id="Text1" 
           runat="server" />
    
      &nbsp;&nbsp;

      <asp:CustomValidator id="CustomValidator1"
           ControlToValidate="Text1"
           ClientValidationFunction="ClientValidate"
           OnServerValidate="ServerValidation"
           Display="Static"
           ErrorMessage="Not an even number!"
           ForeColor="green"
           Font-Name="verdana" 
           Font-Size="10pt"
           runat="server"/>

      <p>
 
      <asp:Button id="Button1"
           Text="Validate" 
           OnClick="ValidateBtn_OnClick" 
           runat="server"/>

   </form>
  
</body>
</html>

<script language="vbscript">

   <!--

   Sub ClientValidate(source, arguments)
            
      If (arguments.Value mod 2) = 0 Then
         arguments.IsValid=true
      Else
         arguments.IsValid=false
      End If

   End Sub

   ' -->

</script>

<%@ Page Language="C#" AutoEventWireup="True" %>

<html>
<head>

   <script runat="server">

      void ValidateBtn_OnClick(object sender, EventArgs e) 
      { 

         // Display whether the page passed validation.
         if (Page.IsValid) 
         {

            Message.Text = "Page is valid.";

         }

         else 
         {

            Message.Text = "Page is not valid!";

         }

      }

      void ServerValidation(object source, ServerValidateEventArgs args)
      {

         try 
         {

            // Test whether the value entered into the text box is even.
            int i = int.Parse(args.Value);
            args.IsValid = ((i%2) == 0);

         }

         catch(Exception ex)
         {

            args.IsValid = false;

         }

      }

   </script>    

</head>
<body>

   <form runat="server">
  
      <h3>CustomValidator ServerValidate Example</h3>

      <asp:Label id="Message"  
           Text="Enter an even number:" 
           Font-Name="Verdana" 
           Font-Size="10pt" 
           runat="server"/>

      <p>

      <asp:TextBox id="Text1" 
           runat="server" />
    
      &nbsp;&nbsp;

      <asp:CustomValidator id="CustomValidator1"
           ControlToValidate="Text1"
           ClientValidationFunction="ClientValidate"
           OnServerValidate="ServerValidation"
           Display="Static"
           ErrorMessage="Not an even number!"
           ForeColor="green"
           Font-Name="verdana" 
           Font-Size="10pt"
           runat="server"/>

      <p>
 
      <asp:Button id="Button1"
           Text="Validate" 
           OnClick="ValidateBtn_OnClick" 
           runat="server"/>

   </form>
  
</body>
</html>

<script language="vbscript">

   <!--

   Sub ClientValidate(source, arguments)
            
      If (arguments.Value mod 2) = 0 Then
         arguments.IsValid=true
      Else
         arguments.IsValid=false
      End If

   End Sub

   ' -->

</script>

.NET Framework-Sicherheit

Vererbungshierarchie

System.Object
   System.Web.UI.Control
     System.Web.UI.WebControls.WebControl
       System.Web.UI.WebControls.Label
         System.Web.UI.WebControls.BaseValidator
          System.Web.UI.WebControls.CustomValidator

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

CustomValidator-Member
System.Web.UI.WebControls-Namespace
BaseValidator-Klasse
RequiredFieldValidator
ClientValidationFunction
ServerValidate
OnServerValidate
ServerValidateEventArgs
Value
IsValid