Freigeben über


Gewusst wie: Implementieren von Rückrufen in ASP.NET-Webseiten

Aktualisiert: November 2007

Bei einem Clientrückruf sendet eine Clientskriptfunktion eine Anforderung an die ASP.NET-Webseite. Diese führt dann eine Kurzversion des normalen Lebenszyklus aus, um den Rückruf zu bearbeiten. Um sicherzustellen, dass Rückrufereignisse von der erwarteten Benutzeroberfläche stammen, können Sie Rückrufe überprüfen. Bei einer Rückrufvalidierung wird ein Ereignis während der Darstellung der Webseite für die Validierung registriert und anschließend beim Rückruf validiert. Eine Übersicht über Rückrufe finden Sie unter Programmgesteuertes Implementieren von Clientrückrufen ohne Postbacks in ASP.NET-Webseiten.

So implementieren Sie die ICallBackEventHandler-Schnittstelle

  1. Implementieren Sie für eine Seite, die nur aus einer Datei besteht, oder ein Benutzersteuerelement die ICallbackEventHandler-Schnittstelle mithilfe einer @ Implements-Direktive in der Seite, wie im folgenden Beispiel dargestellt.

    <%@ Page Language="VB" %>
    <%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>
    
    <%@ Page Language="C#" %>
    <%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>
    
    Hinweis:

    Implementieren Sie die ICallbackEventHandler-Schnittstelle für die partielle Klasse, wenn Sie ein Code-Behind-Seitenmodell verwenden.

  2. Implementieren Sie die RaiseCallbackEvent-Methode der ICallbackEventHandler-Schnittstelle. Die RaiseCallbackEvent-Methode akzeptiert ein einzelnes Argument, das die Ereignisargumente wiedergibt, wie im folgenden Beispiel dargestellt.

    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) _
    Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
    
    End Sub
    
    public void RaiseCallbackEvent(String eventArgument)
    {
    
    }
    
  3. Implementieren Sie die GetCallbackResult-Methode der ICallbackEventHandler-Schnittstelle. Die GetCallbackResult-Methode akzeptiert keine Argumente und gibt eine Zeichenfolge zurück, die das Ergebnis des Rückrufs darstellt. Im folgenden Beispiel wird eine Zeichenfolge mit dem Namen returnValue zurückgegeben.

    Public Function GetCallbackResult() _
    As String Implements _
    System.Web.UI.ICallbackEventHandler.GetCallbackResult
    
        Return returnValue
    
    End Function
    
    public String GetCallbackResult()
    {
        return returnValue;
    }
    

So registrieren Sie den Rückruf für die Ereignisvalidierung

  • Überschreiben Sie die Render-Methode der Page-Klasse, und verwenden Sie die RegisterForEventValidation-Methode der ClientScriptManager-Klasse, um ein Ereignis für die Validierung zu registrieren. Sie können mithilfe der ClientScript-Eigenschaft der Page-Klasse einen Verweis auf die ClientScriptManager-Klasse erhalten. Im folgenden Beispiel wird ein Rückruf mit dem Namen Callback1 für die Ereignisvalidierung registriert.

    Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
    
        Page.ClientScript.RegisterForEventValidation("ClientCallback1")
        MyBase.Render(writer)
    
    End Sub
    
    protected override void Render(HtmlTextWriter writer)
    {
        Page.ClientScript.RegisterForEventValidation("ClientCallback1");
        base.Render(writer);
    }
    

So überprüfen Sie den Rückruf und geben das Rückrufergebnis zurück

  • Verwenden Sie in der RaiseCallbackEvent-Methode die ValidateEvent-Methode der ClientScriptManager-Klasse, um das Ereignis zu überprüfen. Verwenden Sie die gleiche Methodensignatur wie beim Registrieren des Ereignisses für die Validierung. Im folgenden Beispiel wird die Methodensignatur verwendet, die ein Argument akzeptiert.

    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) _
    Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
        Try
            Page.ClientScript.ValidateEvent("ClientCallback1")
            ' Callback logic goes here.
            returnValue = "callback result"
    
        Catch
            ' Failed callback validation logic.
        End Try
    
    End Sub
    
    public void RaiseCallbackEvent(String eventArgument)
    {
        try
        {
            Page.ClientScript.ValidateEvent("ClientCallback1");
            // Callback logic goes here.
            returnValue = "callback result";
        }
        catch
        {
            // Failed callback validation logic.
        } 
    }
    

    Wenn die Validierung erfolgreich ist, sollte der Code mit der Rückrufereignislogik fortfahren. Nach dem Abschluss der RaiseCallbackEvent-Methode wird die GetCallbackResult-Methode aufgerufen, um das Rückrufergebnis als Zeichenfolge an eine Clientskriptfunktion zurückzugeben.

    Weitere Informationen über das Erstellen und Implementieren der Clientskriptfunktionen zum Unterstützen von Clientrückrufen finden Sie unter Programmgesteuertes Implementieren von Clientrückrufen ohne Postbacks in ASP.NET-Webseiten und Clientrückruf und Beispiel für die Implementierung einer Validierung.

Siehe auch

Konzepte

Programmgesteuertes Implementieren von Clientrückrufen ohne Postbacks in ASP.NET-Webseiten

Clientrückruf und Beispiel für die Implementierung einer Validierung