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