Esta sección le presenta el manejo de eventos de ASP.NET.
Un evento es una acción o suceso, como un clic del mouse, una pulsación de tecla, un movimiento del mouse o cualquier notificación generada por el sistema. Un proceso se comunica a través de eventos. Por ejemplo, las interrupciones son eventos generados por el sistema. Cuando ocurren eventos, las aplicaciones pueden responder y administrarlos.
Los eventos en ASP.NET se generan en la máquina del usuario y se procesan en el servidor. Por ejemplo, un usuario hace clic en un botón que se muestra en un navegador. Se genera un evento de clic. El navegador maneja este evento del lado del cliente enviándolo al servidor.
El servidor tiene una subrutina que describe qué hacer cuando se genera un evento; esto se denomina controlador de eventos. Por lo tanto, cuando la información del evento se pasa al servidor, éste verifica si el evento de clic está asociado con un controlador de eventos. Si es relevante, se ejecutará el controlador de eventos.
Los controladores de eventos ASP.NET normalmente toman dos parámetros y devuelven nulo. El primer parámetro representa el objeto que activa el evento y el segundo parámetro es el parámetro del evento.
La sintaxis general de un evento es:
private void EventName (object sender, EventArgs e);
Los eventos de aplicación más importantes son:
Application_Start : se genera cuando se inicia una aplicación o página web.
Application_End : aparece al detener una aplicación o página web.
Asimismo, los eventos de sesión más utilizados son:
Session_Start : se activa cuando el usuario solicita inicialmente una página de la aplicación.
Session_End : se genera cuando finaliza la sesión.
Los eventos comunes de página y control son:
DataBinding : se genera cuando un control está vinculado a una fuente de datos.
Eliminado : se genera cuando se libera la página o el control.
Error : es un evento de página que ocurre cuando hay una excepción no controlada.
Init : se genera al inicializar una página o control.
Cargar : aparece cuando se carga una página o control.
PreRender : aparece cuando se muestra la página o el control.
Descargar : aparece cuando una página o control se descarga de la memoria.
Todos los controles de ASP.NET se implementan como clases y generan eventos cuando el usuario realiza una acción específica sobre ellos. Por ejemplo, cuando un usuario hace clic en un botón, se genera un evento de "Clic". Para manejar eventos, existen propiedades integradas y controladores de eventos. Las aplicaciones de manejo de eventos están codificadas para responder a un evento y tomar las medidas adecuadas al respecto.
De forma predeterminada, Visual Studio crea un controlador de eventos que incluye una subrutina que maneja la cláusula. Esta cláusula nombra los controles y eventos que maneja el programa.
Etiqueta ASP para control de botones:
<asp:Button ID="btnCancel" runat="server" Text="Cancel" />
Aplicación de manejo de eventos para eventos Click:
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancel.ClickEnd Sub
Un evento también se puede codificar sin una cláusula Handles. Luego, el controlador debe recibir el nombre del evento apropiado que se ajuste a la propiedad del control.
Etiqueta ASP para control de botones:
<asp:Button ID="btnCancel" runat="server" Text="Cancel" Onclick="btnCancel_Click" />
Aplicación de manejo de eventos para eventos Click:
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs)End Sub
Los eventos de control comunes incluyen:
evento | propiedad | control |
---|---|---|
Hacer clic | Al hacer clic | botón, botón de imagen, botón de enlace, mapa de bits de guía de imágenes |
Dominio | Al mando | botón, botón de imagen, botón de enlace |
Texto cambiado | OnTextChanged | cuadro de texto |
Índice seleccionadoCambiado | OnSelectedIndexChanged | Menú desplegable, cuadro de lista, lista de botones de opción, cuadro de lista con casillas de verificación |
ComprobadoCambiado | OnCheckedCambiado | casilla de verificación, botón de opción |
Algunos eventos hacen que el formulario se envíe inmediatamente al servidor; estos se denominan eventos de devolución de llamada. Por ejemplo, haga clic en eventos como Button.Click.
Algunos eventos no se devuelven al servidor inmediatamente. Estos se denominan eventos sin devolución de llamada.
Por ejemplo, cambie eventos o eventos de selección como TextBox.TextChanged o CheckBox.CheckedChanged. Estos eventos que no son de devolución de llamada se pueden recuperar inmediatamente estableciendo su propiedad AutoPostBack en verdadero.
El evento predeterminado para los objetos de página es el evento de carga. De manera similar, cada control tiene un evento predeterminado. Por ejemplo, el evento predeterminado para un control de botón es el evento Click.
Los controladores de eventos predeterminados se pueden crear en Visual Studio simplemente haciendo doble clic en un control en la vista Diseño. La siguiente tabla muestra los eventos predeterminados para una lista de controles comunes:
control | evento predeterminado |
---|---|
Control de publicidad (AdRotator) | Anuncio creado |
Lista de artículos (lista con viñetas) | Hacer clic |
Botón | Hacer clic |
Control de calendario (Calendario) | SelecciónCambiada |
Caja | ComprobadoCambiado |
Lista de casillas de verificación | Índice seleccionadoCambiado |
Cuadrícula de datos | Índice seleccionadoCambiado |
Lista de datos | Índice seleccionadoCambiado |
Lista desplegable | Índice seleccionadoCambiado |
Hiperenlace | Hacer clic |
Botón Imagen | Hacer clic |
Punto de acceso (mapa de imagen) | Hacer clic |
Botón de hipervínculo (LinkButton) | Hacer clic |
Lista desplegable de selección única o múltiple (ListBox) | Índice seleccionadoCambiado |
Menú | MenúArtículoClic |
Botón de radio | ComprobadoCambiado |
Grupo de botones de opción (RadioButtonList) | Índice seleccionadoCambiado |
Ejemplo
Este ejemplo incluye una página simple con etiquetas de control y un botón de control. Cuando ocurren eventos de página, como Page_Load, Page_Init, Page_PreRender, etc., enviará un mensaje, que será mostrado por el control de etiqueta. Cuando se hace clic en un botón, se genera el evento Button_Click y también se envía un mensaje que se muestra en la etiqueta.
Cree un nuevo sitio web y arrastre un control Etiqueta y un control Botón desde la caja de herramientas Controles. Usando las propiedades de la ventana, establezca los ID de control en .lblmessage y .btnclick en consecuencia. Establezca la propiedad de texto del control del botón en "Hacer clic".
Archivo de marcado (.aspx):
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="eventdemo._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="lblmessage" runat="server" > </asp:Label> <br /> <br /> <br /> <asp:Button ID="btnclick" runat="server" Text="Click" onclick="btnclick_Click" /> </div> </form> </body></html>
Haga doble clic en la vista de diseño y vaya al código detrás del archivo. El evento Page_Load se crea automáticamente sin ningún código. Escriba la siguiente línea de código que se explica por sí misma:
using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;namespace eventdemo { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { lblmessage.Text += "Page load event handled. <br />"; if (Page.IsPostBack) { lblmessage.Text += "Page post back event handled.<br/>"; } } protected void Page_Init(object sender, EventArgs e) { lblmessage.Text += "Page initialization event handled.<br/>"; } protected void Page_PreRender(object sender, EventArgs e) { lblmessage.Text += "Page prerender event handled. <br/>"; } protected void btnclick_Click(object sender, EventArgs e) { lblmessage.Text += "Button click event handled. <br/>"; } }}
Ejecutar página. Las etiquetas muestran eventos de carga de página, inicialización de página y vista previa de página. Haga clic en el botón para ver el efecto: