Cómo: Crear controladores de eventos en páginas Web ASP.NET (Visual Studio)

Actualización: noviembre 2007

Al editar una página Web ASP.NET en Visual Studio, puede crear controladores de eventos de servidor para los controles y la página de diversas formas. Algunas de ellas dependen del lenguaje de programación en el que trabaje. Puede crear controladores mediante el uso de las funcionalidades de Visual Web Developer, crearlos declarativamente o en código.

Nota:

También puede agregar los eventos para la secuencia de comandos del cliente, que se ejecuta cuando se está ejecutando el control en el explorador como un elemento de la página. Para obtener información detallada, vea Cómo: Agregar eventos de secuencias de comandos de cliente a los controles de servidor Web ASP.NET.

Si un control admite varios eventos, normalmente se configura para que un evento sea el valor predeterminado. Por ejemplo, en el control Button, el evento predeterminado es el evento Click.

Crear controladores de eventos en Visual Web Developer

Para crear un controlador de eventos para el evento predeterminado

  • En la vista Diseño, haga doble clic en la página o en el control para el que desee crear un controlador de eventos predeterminado.

    Visual Web Developer crea un controlador para el evento predeterminado e inicia el editor de código con el punto de inserción en el controlador de eventos.

Para crear un controlador de eventos en la ventana Propiedades

  1. En la vista Diseño, seleccione el control para el que desee crear un controlador de eventos.

    Nota:

    No puede seleccionar la página en la vista Diseño; por consiguiente, no puede crear ningún evento en el nivel de página mediante este procedimiento. En su lugar, utilice el procedimiento anterior.

  2. En Propiedades, haga clic en el símbolo de eventos .

    La ventana Propiedades muestra una lista de los eventos del control seleccionado.

  3. En el cuadro situado junto al nombre de un evento, siga uno de estos procedimientos:

    • Haga doble clic para crear un nuevo controlador de eventos para dicho evento. El diseñador asignará un nombre al controlador utilizando la convención iDControl_evento.

    • Escriba el nombre del evento que desee crear.

    • En la lista desplegable, seleccione el nombre de un controlador.

      Esta lista muestra una lista de los métodos que tienen la firma correcta para el evento.

    Cuando termine, Visual Web Developer cambia al editor de código y coloca el punto de inserción en el controlador.

Para crear un controlador de eventos en el editor de código

  1. Cambie al editor de código mediante una de las técnicas siguientes:

    • En una página Web de un solo archivo, cambie a la vista Código fuente.

    • En una página de código subyacente, en el Explorador de soluciones, haga clic con el botón secundario del mouse en el nombre de la página y, a continuación, haga clic en Ver código.

      Nota:

      En páginas de código subyacente que utilizan C#, esta técnica no funcionará ya que el nombre del control no aparecerá en la lista desplegable del último paso. En su lugar, utilice uno de los restantes procedimientos.

  2. En la parte superior de la ventana del editor de código, seleccione el control en la lista desplegable situada a la izquierda y, a continuación, el evento en la lista desplegable situada a la derecha.

    Nota:

    Los eventos para los que ya existen métodos se muestran en negrita.

Crear controladores de eventos declarativamente

Al usar Visual Web Developer para crear un controlador, esta aplicación crea el esqueleto del controlador y configura el control para que llame al controlador. Puede hacer lo mismo sin utilizar Visual Web Developer.

Para crear un controlador para los eventos de página

  • En el editor de código, cree un método denominado Page_evento.

    Por ejemplo, para crear un controlador para el evento de la página Load, cree un método denominado Page_Load.

    Nota:

    Los controladores de eventos de página no requieren parámetros de la forma en que los necesitan otros controladores de eventos de controles.

    Las páginas ASP.NET enlazan automáticamente los eventos de páginas a los métodos que tienen el nombre Page_evento. Este enlace automático lo configura el atributo AutoEventWireup de la directiva @ Page, cuyo valor se establece de forma predeterminada en true. Si establece AutoEventWireup en false, la página no busca automáticamente los métodos que usen la convención de nomenclatura Page_evento.

    En el ejemplo de código siguiente se muestra un controlador del evento Load de la página.

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Page.IsPostBack Then
            Response.Write("<br>Page has been posted back.")
        End If
    End Sub
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            Response.Write("<br>Page has been posted back.");
        }
    }
    

Con el fin de agregar un controlador declarativamente para un control

  1. En el editor de código, cree un método de control de eventos con la firma adecuada.

    El método se puede denominar como desee.

  2. En el marcado del control, utilice los atributos denominados On<nombre de evento> para establecer un enlace con el controlador de eventos. Utilice como valor el nombre del método controlador de eventos.

    En el ejemplo de código siguiente se muestra el código de formato de un control TextBox para el que se enlaza el evento TextChanged al método controlador de eventos denominado NameChange:

    Nota de seguridad:

    En este ejemplo hay un cuadro de texto que acepta datos del usuario, lo que puede suponer una amenaza para la seguridad. De forma predeterminada, las páginas Web ASP.NET validan los datos escritos por el usuario para comprobar que no incluyen secuencias de comandos ni elementos HTML. Para obtener más información, vea Información general sobre los ataques mediante secuencias de comandos.

    Protected Sub NameChange(ByVal sender As Object, ByVal e As System.EventArgs) Handles textbox1.TextChanged
        'Sub for the OnTextChanged event
    End Sub
    
    <asp:TextBox ID="textbox1" Runat="server" 
    Text="" 
    OnTextChanged="NameChange" />
    
  3. Agregue el método del evento a su código. Por ejemplo, el código de ejemplo de siguiente muestra el código para el método controlador de eventos denominado NameChange:

    protected void NameChange(object sender, EventArgs e)
    {
        //Method for the OnTextChanged event.
    }
    

Para agregar un controlador de eventos implícitamente en Visual Basic

  1. En el editor de código, cree un método de control de eventos con la firma adecuada.

    El método se puede denominar como desee.

  2. Utilice la palabra clave Handles, especificando el control y el evento a los que se debe enlazar el método.

    En el ejemplo de código siguiente se muestra un controlador de eventos para el evento Click de un botón denominado SampleButton. El método en el ejemplo se denomina Clicked.

    Protected Sub SampleButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) _
            Handles SampleButton.Click
        ' Code goes here.
    End Sub
    
    Nota:

    Si utiliza la palabra clave Handles, no incluya ningún atributo de evento en el código de formato del control. Si lo hace, se llamará dos veces al controlador.

  3. Si el método controla varios eventos, agregue los nombres de los eventos adicionales a la cláusula Handles, separados por coma.

    En el ejemplo de código siguiente se muestra un método que controla el evento Click de varios botones. En el controlador, el código prueba el argumento del remitente para determinar el botón en el que se hizo clic.

    Protected Sub AnyClicked(ByVal sender As Object, ByVal e As System.EventArgs) _
            Handles Button1.Click, Button2.Click, Button3.Click
        Dim b As Button = CType(sender, Button)
        Response.Write("You clicked the button labeled " & b.ID)
    End Sub
    

Vea también

Tareas

Cómo: Enlazar controladores de eventos dinámicamente en tiempo de ejecución en las páginas Web ASP.NET

Conceptos

Información general sobre los controles de servidor Web ASP.NET

Otros recursos

Controlar y provocar eventos

Control de eventos del servidor en páginas Web ASP.NET