[ASP.NET] Controles de usuario II: Delegar evento a la página contenedora

Posted on


En el post pasado (míralo acá) vimos como crear un control de usuario, así que en el post de hoy revisaremos otra característica que va a permitir manejar un determinado evento del control de usuario pero en la página que lo contiene. Esto va a permitir crear un “cascaron del control” y utilizarlo desde diferentes páginas y en cada una implementar la lógica necesaria.

Pero como podemos realizar lo anterior? vamos a ir paso por paso implementando dicha funcionalidad en el control de usuario para el registro:

1. Clase para compartir información:

Vamos a crear una clase la cual va a contener la información que queremos compartir entre el control de usuario y la página que lo contiene, así la página contenedora no va a tener que acceder directamente al control, en su lugar accederá a una clase. La clase que se cree debe heredar de EventArgs, entonces si creamos una clase llamada usuario vamos a tener algo como:

   1:  Public Class Usuario
   2:      Inherits EventArgs
   3:   
   4:      Public Sub New(ByVal sNombre As String, ByVal sApellido As String, ByVal sUsuario As String, ByVal sEmail As String)
   5:          _spNombre = sNombre
   6:          _spApellido = sApellido
   7:          _spUsuario = sUsuario
   8:          _spEmail = sEmail
   9:      End Sub
  10:   
  11:      Public Property spNombre As String
  12:      Public Property spApellido As String
  13:      Public Property spUsuario As String
  14:      Public Property spEmail As String
  15:   
  16:      Public Overrides Function ToString() As String
  17:          Dim infoUsuario As New StringBuilder()
  18:          infoUsuario.Append("Nombre: " & spNombre & "<br/>")
  19:          infoUsuario.Append("Apellido: " & spApellido & "<br/>")
  20:          infoUsuario.Append("Usuario: " & spUsuario & "<br/>")
  21:          infoUsuario.Append("Email: " & spEmail & "<br/>")
  22:          Return infoUsuario.ToString()
  23:      End Function
  24:   
  25:  End Class

2. Evento público:

En el code behind del control de usuario se debe declarar un evento público, en donde el segundo parámetro será un objeto de tipo de la clase creada anteriormente:

   1:  Public Event RegistrarUsuario(ByVal sender As Object, ByVal e As Usuario)

3. Evento del control:

En el code behind del control de usuario, más específicamente en el evento del control que se desea delegar a la página contenedora creamos una instancia de la clase que vamos a utilizar para compartir información y especifícanos el nombre del evento público creado,  para nuestro caso el evento click del botón registrar:

   1:  Protected Sub btnRegistrar_Click(sender As Object, e As EventArgs) Handles btnRegistrar.Click
   2:      Dim nuevoUsuario As New Usuario(sNombre:=txtNombre.Text,
   3:                                      sApellido:=txtApellido.Text,
   4:                                      sUsuario:=txtUsuario.Text,
   5:                                      sEmail:=txtEmail.Text)
   6:      RaiseEvent RegistrarUsuario(Me, nuevoUsuario)
   7:  End Sub

4. Manejando el evento:

Finalmente al agregar el control de usuario a una página aspx, el control de usuario dentro de sus eventos ahora dispone de uno llamado RegistrarUsuario, lo interesante de ese evento es que en la firma del mismo en el segundo parámetro disponemos de un objeto de tipo de la clase que creamos para compartir la información, por lo tanto podemos acceder a las propiedades de dicha clase con sus respectivos valores, para el ejemplo, vamos a mostrar en un label el nombre y el apellido:

   1:   Private Sub RegistrarUsuario_RegistrarUsuario(sender As Object, e As Usuario) Handles RegistrarUsuario.RegistrarUsuario
   2:        lblMensaje.Text = "Usuario Registrado: " & e.spNombre & " " & e.spApellido
   3:   End Sub

Claro la idea es implementar algo más complejo, como sería el registro del usuario en la base de datos. Espero les sea interesante el artículo. Les dejo el código del ejemplo:

Ejemplo en VB!

Ejemplo en C#!

Un comentario sobre “[ASP.NET] Controles de usuario II: Delegar evento a la página contenedora

    […] [ASP.NET] Controles de usuario II: Delegar evento a la página contenedora […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s