Share via


Cómo: Implementar devoluciones de llamada en páginas Web ASP.NET

Actualización: noviembre 2007

En una devolución de llamada de cliente, una función de secuencia de comandos de cliente envía una solicitud a la página Web ASP.NET, que, a continuación, ejecuta una versión abreviada de su ciclo de vida normal para procesar la devolución de llamada. Para garantizar que los eventos de devolución de llamada se originan en la interfaz de usuario (UI) prevista, es posible validar las devoluciones de llamada. Para la validación de una devolución de llamada, se registra un evento para su validación durante la representación de la página Web y, después, durante la devolución de llamada, se valida dicho evento. Para obtener información general acerca de las devoluciones de llamada, vea Implementar mediante programación devoluciones de llamada de cliente sin devoluciones de datos en páginas web de ASP.NET.

Para implementar la interfaz ICallBackEventHandler

  1. Para un control de usuario o una página de un solo archivo, implemente la interfaz ICallbackEventHandler utilizando una directiva @ Implements en la página, como se muestra en el ejemplo siguiente.

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

    Si utiliza un modelo de página de código subyacente, implemente la interfaz ICallbackEventHandler para la clase parcial.

  2. Implemente el método RaiseCallbackEvent de la interfaz ICallbackEventHandler. El método RaiseCallbackEvent utiliza un único argumento que representa los argumentos del evento, como se muestra en el ejemplo siguiente.

    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) _
    Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
    
    End Sub
    
    public void RaiseCallbackEvent(String eventArgument)
    {
    
    }
    
  3. Implemente el método GetCallbackResult de la interfaz ICallbackEventHandler. El método GetCallbackResult no utiliza ningún argumento y devuelve una cadena que representa el resultado de la devolución de llamada. En el ejemplo siguiente, se devuelve una cadena denominada returnValue.

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

Para registrar la devolución de llamada para la validación del evento

  • Reemplace el método Render de la clase Page y utilice el método RegisterForEventValidation de la clase ClientScriptManager para registrar un evento para su validación. Puede obtener una referencia a la clase ClientScriptManager mediante la propiedad ClientScript de la clase Page. En el ejemplo siguiente, se registra una devolución de llamada denominada Callback1 para la validación del 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);
    }
    

Para validar la devolución de llamada y devolver el resultado de la devolución de llamada

  • En el método RaiseCallbackEvent, utilice el método ValidateEvent de la clase ClientScriptManager para validar el evento. Utilice la misma firma de método que utilizó cuando registró el evento para su validación. En el ejemplo siguiente, se usa la firma de método que utiliza un solo argumento.

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

    Si la validación es correcta, el código debería continuar con la lógica del evento de devolución de llamada. Una vez que finaliza el método RaiseCallbackEvent, se invoca el método GetCallbackResult para devolver el resultado de la devolución de llamada como una cadena a una función de secuencia de comandos de cliente.

    Para obtener más información sobre cómo crear e implementar funciones de secuencia de comandos de cliente para admitir devoluciones de llamada de cliente, vea Implementar mediante programación devoluciones de llamada de cliente sin devoluciones de datos en páginas web de ASP.NET y Ejemplo de devolución de llamada del cliente con implementación de validación.

Vea también

Conceptos

Implementar mediante programación devoluciones de llamada de cliente sin devoluciones de datos en páginas web de ASP.NET

Ejemplo de devolución de llamada del cliente con implementación de validación