Webformulare sind heute eines der Hauptkommunikationsmittel im Internet. Produktanfragen, Bestellungen, Informationen und vieles mehr werden über solche Formulare versendet. Doch was tun, wenn vom User eingegebene Daten nicht korrekt sind und somit ein persönlicher Kontakt nicht zu Stande kommen kann? Oftmals geht sehr viel Zeit auf der Suche nach diesem User verloren. Was wäre, wenn Sie dieses Problem mit Leichtigkeit schon im Vorfeld verhindern könnten, indem Sie die Daten des Users bereits während der Eingabe überprüfen? Als Hilfsmittel stellt Ihnen ASP.NET so genannte Validation Controls zur Verfügung.
Validation Controls - Browser Unabhängigkeit
Validation Controls eignen sich explizit zur Überprüfung von Daten, die vom User in ein Formular eingegeben werden. Früher musste man aufwendige Scripts schreiben, um sicherzustellen, dass dies korrekt geschieht. Oft war es sogar notwendig, eine client- und serverseitige Prüfung zu programmieren. Dort kamen Sprachen wie JavaScript und VBScript zum Einsatz. Die clientseitige Prüfung stellte dabei ein besonderes Problem dar: Nicht jeder Browser verstand die von Ihnen programmierten Anwendungen zur Prüfung von Formularen.
Damit ist jetzt Schluss: Mit den Validation Controls steht Ihnen eine umfangreiche Klasse zur Verfügung, die relativ einfach anzuwenden ist. Einer der größten Vorteile der Validation Controls ist die Browser-Unabhängigkeit. Kann ein Browser die clientseitige Prüfung nicht durchführen, erledigt das ASP.NET für Sie und wandelt automatisch in eine serverseitige Prüfung um.
Arten der Validation Controls:
RequiredFieldValidator
Überprüft, ob im verknüpften Feld eine Eingabe erfolgt ist.
CompareValidator
Überprüft, ob zwei Felder den gleichen Wert besitzen.
RangeValidator
Kontrolliert, ob eine Eingabe in einem bestimmten Wertebereich liegt.
RegularExpressionValidator
Vergleicht die Eingabe mit einem regulären Ausdruck.
CustomValidator
Mit diesem Control können Sie die Prüfung eigener JavaScripts oder ASP.NET Scripts durchführen.
ValidationSummary
Mit diesem Control lassen sich Fehlermeldungen zusammenfassen.
Die Funktionsweise eines Validation Controls
Alle Validation Controls sind von der Klasse BaseValidator abgeleitet und besitzen somit die gleichen grundlegenden Eigenschaften. Die Klasse BaseValidator dagegen [n3] stammt von der Klasse Label und beinhaltet folglich deren Eigenschaften.
Die grundlegenden Eigenschaften der Validation Controls entnehmen Sie der Tabelle.
Eigenschaft | Wert |
ControlToValidate | Gibt an, welches Steuerelement geprüft werden soll |
Display | Darstellung des Validation Controls |
ErrorMessage | Die auszugebende Fehlermeldung |
EnableClientScript | Legt fest, ob eine clientseitige Prüfung erfolgen soll |
IsValid | Prüft, ob das Steuerelement die Gültigkeitsprüfung absolviert hat |
|
Enabled | Legt fest, ob das Validation Control aktiv ist |
|
CausesValidation | Legt fest, ob bei einem PostBack geprüft werden soll. Siehe Listing 1 |
|
Listing 1:
<asp:Button Id=?btnSenden? Text=?Formular senden? runat=?server? [n4] />
<asp:Button Id=?btnAbbrechen? Text=?Aktion abbrechen?
runat=?server? CausesValidatation=?False? />
Anwendung eines Validation Controls
Sie haben ein Kontaktformular auf Ihrer Webseite, in das der User seine Kontaktdaten eingeben soll. Natürlich möchten Sie, dass wichtige Daten zwingend angegeben werden. Im folgenden Listing muss der User seinen Namen hineinschreiben. Tut er dies nicht, lässt sich das Formular nicht versenden.
Listing 2:
Name:<br>
<asp:textbox id="Name" runat="server"></asp:textbox>
<asp:requiredfieldvalidator
id="reqName"
runat="server"
errormessage="Bitte geben Sie Ihren Namen ein:"
display="Static"
controltovalidate="Name">
</asp:requiredfieldvalidator>
<br>
<asp:button id="btnGo" runat="server" text="Go!"></asp:button>
So sieht das Formular aus (Bild 1), bevor es der User versenden will. Gibt er keine Daten ein, erscheint das Validation Control (Bild 2) und gibt die von Ihnen hinterlegte Fehlermeldung an.
Einsatz mehrerer Validation Controls
Natürlich können Sie auch ein Steuerelement mit mehreren Validation Controls prüfen. Sie wollen zum Beispiel kontrollieren, ob ein Steuerelement ausgefüllt wurde und ob es eine gültige E-Mail-Adresse enthält. Dazu verwenden Sie den RequiredFieldValidator und den RegularExpressionValidator. Wie es funktioniert, entnehmen Sie Listing 3.
Listing 3:
Wert:<br>
<asp:textbox id="Wert" runat="server"></asp:textbox>
<asp:requiredfieldvalidator id="reqName"
runat="server"
controltovalidate="Wert" display="None"
errormessage="Bitte geben Sie Ihren Namen ein!">
</asp:requiredfieldvalidator>
<asp:rangevalidator id="rangeVWert"
runat="server" controltovalidate="Wert"
display="None"
errormessage="Der Wert muss zwischen 1 und 50 liegen!"
minimumvalue="1"
maximumvalue="50"
type="Integer">
</asp:rangevalidator>
<br>
Email:<br>
<asp:textbox
id="Email"
runat="server">
</asp:textbox>
<asp:requiredfieldvalidator id="reqEmail"
runat="server"
controltovalidate="Email"
display="None"
errormessage="Bitte geben Sie Ihre Emailadresse ein!">
</asp:requiredfieldvalidator>
<asp:regularexpressionvalidator
id="regExEmail"
runat="server"
display="None"
errormessage="Bitte geben Sie eine gültige Emailadresse ein!" controltovalidate="Email"
validationexpression="w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*">
</asp:regularexpressionvalidator>
<br>
<asp:button id="btnGo" runat="server" text="Go!"></asp:button>
<br>
<br>
<asp:validationsummary
id="validSummary"
runat="server">
</asp:validationsummary>
Die Formularelemente werden hier auf vier verschiedene Kriterien geprüft. Alle Fehlermeldungen werden im ValidationSummary Control zusammengefasst und angezeigt.
ValidationSummary Control
Mit dem ValidationSummary Control haben Sie die Möglichkeit, alle Fehlermeldungen zusammen auszugeben. Die Anwendung ist denkbar einfach: Es genügt, dieses Control an der gewünschten Stelle zu platzieren, und schon werden Ihre Fehlermeldungen dort zusammengefasst dargestellt.
Um keine doppelte Ausgabe der Meldungen zu bekommen, empfiehlt es sich, die Eigenschaft Display der Validation Controls auf None zu setzen. Alternativ dazu können Sie die Eigenschaft Text mit einem * versehen und die Eigenschaft Display auf Static setzen.
Der CompareValidator vergleicht die Eingabe zweier Eingabesteuerelemente. Die Eigenschaften sind im Prinzip die gleichen wie bei den anderen Controls mit einem kleinen Unterschied:
ControlToCompare
Hier bestimmen Sie das Steuerelement, dessen Inhalt verglichen werden soll.
ControlToValidate
Das Steuerelement mit dem Originalwert, der geprüft werden soll.
ValueToCompare
Hier können Sie den Wert, mit dem verglichen werden soll, explizit eintragen.
Listing 4:
Bitte Passwort eingeben:<br>
<asp:textbox id="txtPw" runat="server"></asp:textbox>
<asp:requiredfieldvalidator
id="RequiredFieldValidator1"
runat="server"
errormessage="Bitte geben Sie ein Passwort ein!"
controltovalidate="txtPw">
</asp:requiredfieldvalidator>
<br>
Passwort bestätigen:<br>
<asp:textbox
id="txtPwConfirm"
runat="server">
</asp:textbox>
<asp:comparevalidator
id="CompareValidator1"
runat="server"
errormessage="Die PW Bestätigung muss mit dem PW
Feld überein stimmen!"
controltocompare="txtPwConfirm"
controltovalidate="txtPw">
</asp:comparevalidator>
<br>
<asp:button id="btnGo" runat="server" text="Go!"></asp:button>
In diesem Artikel haben wir Ihnen die grundlegenden Eigenschaften der Validation Controls gezeigt. Wie Sie sehen, ist es mit ASP.NET richtig einfach, ein Formular zu überprüfen.
Ich werde in den kommenden Tagen noch einen kleinen Artikel zu CostumValidator schreiben.