Gewusst wie: Validierung mit einer benutzerdefinierten Funktion für ASP.NET-Serversteuerelemente
Aktualisiert: November 2007
Wenn die vorhandenen ASP.NET-Validierungssteuerelemente nicht Ihren Anforderungen entsprechen, können Sie eine benutzerdefinierte serverseitige Validierungsfunktion definieren und sie mit dem CustomValidator-Steuerelement aufrufen. Sie können auch clientseitige Validierung für eine Überprüfung der Benutzereingabe hinzufügen, bevor die Seite übermittelt wird. Schreiben Sie dazu eine Funktion in ECMAScript (JavaScript), die die Logik der serverseitigen Methode kopiert.
Führen Sie auch dann eine serverseitige Validierung durch, wenn Sie eine clientseitige Validierung verwenden. Die serverseitige Validierung trägt dazu bei, dass Benutzer die Validierung nicht umgehen können, indem sie das Clientskript deaktivieren oder ändern.
Sicherheitshinweis: |
---|
ASP.NET-Webseiten führen standardmäßig eine automatische Validierung durch, um zu verhindern, dass böswillige Benutzer Skripts oder HTML-Elemente an die Anwendung senden. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe. |
So führen Sie mit einer benutzerdefinierten Funktion eine Validierung auf dem Server durch
Fügen Sie der Seite ein CustomValidator-Steuerelement hinzu, und legen Sie die folgenden Eigenschaften fest:
Eigenschaft
Beschreibung
Die ID des zu validierenden Steuerelements.
Eigenschaften, mit denen der Text sowie die Position der Fehler festgelegt werden, die beim Fehlschlagen der Validierung angezeigt werden. Ausführliche Informationen finden Sie unter Gewusst wie: Steuern der Anzeige von Validierungsfehlermeldungen für ASP.NET-Serversteuerelemente.
Erstellen Sie einen serverbasierten Ereignishandler für das ServerValidate-Ereignis des Steuerelements. Dieses Ereignis wird aufgerufen, um die Validierung durchzuführen. Die Methode weist eine Signatur ähnlich der Folgenden auf:
Protected Sub CustomValidator1_ServerValidate(ByVal _ source As System.Object, ByVal args As _ System.Web.UI.WebControls.ServerValidateEventArgs) _ Handles CustomValidator1.ServerValidate End Sub
protected void ValidationFunctionName(object source, ServerValidateEventArgs args) { }
Der source-Parameter ist ein Verweis auf das benutzerdefinierte Validierungssteuerelement, das dieses Ereignis auslöst. Die args.Value -Eigenschaft enthält die zu validierende Benutzereingabe. Legen Sie args.IsValid auf true fest, wenn der Wert gültig ist; andernfalls auf false.
Das folgende Codebeispiel zeigt das Erstellen einer benutzerdefinierten Validierung. Der Ereignishandler bestimmt, ob die Eingabe des Benutzers 8 oder mehr Zeichen umfasst.
Protected Sub TextValidate(ByVal source As System.Object, _ ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) _ Handles CustomValidator1.ServerValidate args.IsValid = (args.Value.Length >= 8) End Sub
protected void TextValidate(object source, ServerValidateEventArgs args) { args.IsValid = (args.Value.Length >= 8); }
Binden Sie den Ereignishandler an die Methode. Verwenden Sie dazu z. B. folgenden Code:
<asp:textbox id="TextBox1" ></asp:textbox> <asp:CustomValidator id="CustomValidator1" OnServerValidate="TextValidate" ControlToValidate="TextBox1" ErrorMessage="Text must be 8 or more characters."> </asp:CustomValidator>
<asp:textbox id="TextBox1" ></asp:textbox> <asp:CustomValidator id="CustomValidator1" OnServerValidate="TextValidate" ControlToValidate="TextBox1" ErrorMessage="Text must be 8 or more characters."> </asp:CustomValidator>
Fügen Sie der ASP.NET-Webseite eine Testroutine hinzu, um die Gültigkeit zu überprüfen. Ausführliche Informationen finden Sie unter Gewusst wie: Programmgesteuertes Testen der Validierung für ASP.NET-Serversteuerelemente.
So erstellen Sie eine benutzerdefinierte Validierungslogik auf dem Client
Erstellen Sie eine Validierungsfunktion in ECMAScript (JavaScript, JScript).
Das folgende Codebeispiel veranschaulicht die benutzerdefinierte clientseitige Validierung. Ein Auszug aus der Seite zeigt ein TextBox-Steuerelement, auf das durch ein CustomValidator-Steuerelement verwiesen wird. Das Validierungssteuerelement ruft eine Clientskriptfunktion mit dem Namen validateLength auf, um sicherzustellen, dass der Benutzer mindestens 8 Zeichen in das TextBox-Steuerelement eingegeben hat.
<script type="text/javascript"> function validateLength(oSrc, args){ args.IsValid = (args.Value.length >= 8); } </script>
<script type="text/javascript"> function validateLength(oSrc, args){ args.IsValid = (args.Value.length >= 8); } </script>
<asp:Textbox id="text1" text=""></asp:Textbox> <asp:CustomValidator id="CustomValidator2" ControlToValidate = "text1" ErrorMessage = "You must enter at least 8 characters!" ClientValidationFunction="validateLength" > </asp:CustomValidator>
<asp:Textbox id="text1" text=""></asp:Textbox> <asp:CustomValidator id="CustomValidator2" ControlToValidate = "text1" ErrorMessage = "You must enter at least 8 characters!" ClientValidationFunction="validateLength" > </asp:CustomValidator>
Fügen Sie der ASP.NET-Webseite eine Testroutine hinzu, um die Gültigkeit zu überprüfen. Ausführliche Informationen finden Sie unter Gewusst wie: Programmgesteuertes Testen der Validierung für ASP.NET-Serversteuerelemente.
Siehe auch
Konzepte
Arten der Validierung für ASP.NET-Serversteuerelemente