Freigeben über


Gewusst wie: Programmgesteuertes Validieren für ASP.NET-Serversteuerelemente

Aktualisiert: November 2007

Standardmäßig führen ASP.NET-Validierungssteuerelemente automatisch eine Validierung durch, wenn die Seite nach der Seiteninitialisierung (d. h. nach der Verarbeitung der Ansichtszustands- und Postbackdaten) und vor dem Aufruf des Ereignisbehandlungscodes an den Server zurückgesendet wird. Die Steuerelemente können möglicherweise auch eine Überprüfung im Browser durchführen, wenn der Browser Clientskript unterstützt.

Gelegentlich kann es jedoch sein, dass Sie die Validierung programmgesteuert ausführen möchten. Eine programmgesteuerte Validierung ist in den folgenden Situationen möglich:

  • Wenn die Validierungswerte bis zur Laufzeit nicht festgelegt sind. Wenn Sie z. B. mit einem RangeValidator-Steuerelement arbeiten, legen Sie seine MinimumValue-Eigenschaft und seine MaximumValue-Eigenschaft möglicherweise auf der Grundlage von Werten, die vom Benutzer eingegeben wurden, zur Laufzeit fest. In diesem Fall funktioniert die Standardvalidierung nicht, weil nicht genügend Informationen im RangeValidator-Steuerelement verfügbar sind, wenn die Seite die Validierungssteuerelemente zum Durchführen der Validierung aufruft.

  • Wenn Sie die Gültigkeit eines Steuerelements (oder der Seite als Ganzes) im Page_Load-Ereignishandler überprüfen möchten. In dieser Phase der Seitenverarbeitung wurden die Validierungssteuerelemente noch nicht aufgerufen, sodass die IsValid-Eigenschaft der Seite oder der einzelnen Steuerelemente noch nicht festgelegt wurde. (Beim Versuch, den Wert dieser Eigenschaft abzurufen, wird eine Ausnahme ausgelöst.) Wenn Sie die Gültigkeit bestimmen möchten, können Sie die Validierung jedoch programmgesteuert aufrufen.

  • Wenn Sie Steuerelemente (Eingabesteuerelemente oder Validierungssteuerelemente) zur Laufzeit hinzufügen.

Allgemein ausgedrückt, können Sie jederzeit eine programmgesteuerte Validierung ausführen, wenn Sie präzise Kontrolle über den Ausführungszeitpunkt der Validierung haben möchten.

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. Wenn Sie dieses Feature deaktiviert haben, können Sie die ValidateInput-Methode selbst aufrufen. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.

So führen Sie eine programmgesteuerte Validierung durch

  • Rufen Sie die Validate-Methode des Validierungssteuerelements auf.

    Das Steuerelement führt die Überprüfung aus und legt die IsValid-Eigenschaft des Steuerelements und der Seite fest. Wenn ein Fehler erkannt wurde, wird bei Rückgabe der Seite an den Benutzer wie üblich eine Fehlermeldung angezeigt.

    Das folgende Codebeispiel veranschaulicht, wie Sie Eigenschaften programmgesteuert festlegen können. In diesem Fall nimmt eine ASP.NET-Webseite Reservierungen für einen Ferienort entgegen, der während jedes Aufenthalts eine kostenlose Rundfahrt anbietet. Benutzer müssen das Datum ihrer An- und Abreise angeben und den Zeitpunkt für die Rundfahrt während ihres Aufenthalts festlegen. Mit einem RangeValidator-Steuerelement wird sichergestellt, dass der Benutzer ein typisches Datumsformat eingegeben hat und das Datum der Rundfahrt zwischen den Datumsangaben für die An- und Abreise liegt.

    Hinweis:

    Wenn ein Benutzer einen Wert eingibt, der sich nicht in ein Datum konvertieren lässt, löst das Validierungssteuerelement eine Ausnahme aus. Aus Gründen der Übersichtlichkeit wird die Fehlerbehandlung in diesem Beispiel nicht berücksichtigt.

    An- und Abreisedatum werden aus zwei TextBox-Webserversteuerelementen auf der Seite entnommen, txtArrival und txtDeparture. Das Datum der Rundfahrt wird in ein drittes TextBox-Steuerelement mit der Bezeichnung txtTourDate eingegeben, das vom RangeValidator-Steuerelement validiert wird.

    Hinweis:

    Bei der programmgesteuerten Validierung müssen Sie das Clientskript deaktivieren, damit das Steuerelement nicht die falsche Fehlermeldung anzeigt, bevor der serverseitige Validierungscode ausgeführt wurde. Ausführliche Informationen finden Sie unter Gewusst wie: Deaktivieren der Validierung für ASP.NET-Serversteuerelemente.

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
     System.EventArgs) Handles Button1.Click
        RangeValidator1.MinimumValue = txtArrival.Text
        RangeValidator1.MaximumValue = txtDeparture.Text
        RangeValidator1.Type = ValidationDataType.Date
        RangeValidator1.Validate()
    
        If Not RangeValidator1.IsValid Then
            RangeValidator1.ErrorMessage = "The tour date must " & _
            "fall between the arrival and departure dates."
        End If
    End Sub
    
    private void Button1_Click(object sender, System.EventArgs e)
    {
        RangeValidator1.MinimumValue = txtArrival.Text;
        RangeValidator1.MaximumValue = txtDeparture.Text;
        RangeValidator1.Type = ValidationDataType.Date;
        RangeValidator1.Validate();
    
        if (!RangeValidator1.IsValid)
        {
            RangeValidator1.ErrorMessage = "The tour date must " +
            "fall between the arrival and departure dates.";
        }
    }
    

Siehe auch

Konzepte

Arten der Validierung für ASP.NET-Serversteuerelemente

Weitere Ressourcen

ASP.NET-Validierungssteuerelemente