Condividi tramite


Procedura: implementare callback in pagine Web ASP.NET

Aggiornamento: novembre 2007

In un callback client una funzione script client invia una richiesta alla pagina Web ASP.NET, che esegue quindi una versione abbreviata del suo ciclo di vita normale per elaborare il callback. Per assicurarsi che gli eventi di callback abbiano origine dall'interfaccia utente prevista, è possibile convalidare i callback. Nella convalida di callback si registra un evento per la convalida durante il rendering della pagina Web e quindi si convalida l'evento durante il callback. Per informazioni generali sui callback, vedere Implementazione di callback client a livello di codice senza postback nelle pagine Web ASP.NET.

Per implementare l'interfaccia ICallBackEventHandler

  1. Per un controllo utente o una pagina a file singolo implementare l'interfaccia ICallbackEventHandler utilizzando una direttiva @ Implements nella pagina, come illustrato nell'esempio seguente.

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

    Se si utilizza un modello di pagina code-behind, implementare l'interfaccia ICallbackEventHandler per la classe parziale.

  2. Implementare il metodo RaiseCallbackEvent dell'interfaccia ICallbackEventHandler. Il metodo RaiseCallbackEvent accetta un singolo argomento che rappresenta gli argomenti dell'evento, come illustrato nell'esempio seguente.

    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) _
    Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
    
    End Sub
    
    public void RaiseCallbackEvent(String eventArgument)
    {
    
    }
    
  3. Implementare il metodo GetCallbackResult dell'interfaccia ICallbackEventHandler. Il metodo GetCallbackResult non accetta alcun argomento e restituisce una stringa che rappresenta il risultato del callback. Nell'esempio riportato di seguito viene restituita una stringa denominata returnValue.

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

Per registrare il callback per la convalida dell'evento

  • Eseguire l'override del metodo Render della classe Page e utilizzare il metodo RegisterForEventValidation della classe ClientScriptManager per registrare un evento per la convalida. È possibile ottenere un riferimento alla classe ClientScriptManager utilizzando la proprietà ClientScript della classe Page. Nell'esempio seguente un callback denominato Callback1 viene registrato per la convalida dell'evento.

    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);
    }
    

Per convalidare il callback e restituire il risultato del callback

  • Nel metodo RaiseCallbackEvent utilizzare il metodo ValidateEvent della classe ClientScriptManager per convalidare l'evento. Utilizzare la stessa firma del metodo utilizzata durante la registrazione dell'evento per la convalida. Nell'esempio seguente viene utilizzata la firma del metodo che accetta un argomento.

    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.
        } 
    }
    

    Se la convalida ha esito positivo, il codice deve continuare con la logica dell'evento callback. Dopo che il metodo RaiseCallbackEvent è stato completato, il metodo GetCallbackResult viene richiamato per restituire il risultato del callback sotto forma di stringa a una funzione script client.

    Per ulteriori informazioni sulla creazione e sull'implementazione delle funzioni script client per il supporto di callback client, vedere Implementazione di callback client a livello di codice senza postback nelle pagine Web ASP.NET e Esempio di callback client con implementazione di convalida.

Vedere anche

Concetti

Implementazione di callback client a livello di codice senza postback nelle pagine Web ASP.NET

Esempio di callback client con implementazione di convalida