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.
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" />
<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" />
<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" />
<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" />
<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
- AspNetHostingPermission für den Betrieb in einer Hostumgebung. Anforderungswert: LinkDemand, Berechtigungswert: Minimal
- AspNetHostingPermission für den Betrieb in einer Hostumgebung. Anforderungswert: InheritanceDemand, Berechtigungswert: Minimal
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