Busqueda local

Loading

miércoles, 2 de febrero de 2011

Entendiendo los Helpers

Un helper es simplemente un método que regresa una cadena de texto. La cula puede representar cualquier tipo de contenido que deseemos. ASP.NET MVC ya incluye un conjunto de Helpers muy útiles, como por ejemplo:
  • Html.ActionLink()
  • Html.BeginForm()
  • Html.CheckBox()
  • Html.DropDownList()
  • Html.EndForm()
  • Html.Hidden()
  • Html.ListBox()
  • Html.Password()
  • Html.RadioButton()
  • Html.TextArea()
  • Html.TextBox()
Uso de los Helpers:
ejemplohelper1
Si observamos el código podremos ver que dentro del primer DIV, hay una Html.HiddenFor, se emplea para agregar una campo oculto en la página final. El código model => model.CategoriaId es una expresión Lambda que establece cual de las propiedades del Model deberá ser renderizada usando este Helper. Lo mismo ocurre con los otros 3 helpers en el segundo DIV.
Un helper es una forma muy elegante de aplicar el principio DRY, además que mediante su uso, simplificamos el VIEW, y con esto reforzamos el principio SoC.
En internet podemos encontrar mucho ejemplos para empezar a usar esta poderosa ayuda dentro de nuestro código. Un helper puede ser mucho más sofisticado y tener una utilidad mucho más importante que solo renderizar una cadena de texto.
Problema:
Supongamos que necesitamos crear una Vista donde el usuario pueda agregar una fila de forma dinámica cuyo contenido incluye un control de tipo Opción o Botón de Radio. Como bien sabemos esto puede representar un dilema, y un reto. Ya que cada control al agregarse seria único y la funcionalidad del radio botón se vería afectada, ya que no sería posible seleccionar solo uno de estos controles, en vez de ello, se seleccionarían todos los que recibieran el clic con el mouse. Por el contrario si se tratara de check boxes, el reto seria en sentido contrario, ya que debemos garantizar que cada uno será único.
Por ejemplo:
ejemplohelper3
ejemplohelper2
Si empleamos las herramientas del programador de IE podemos ver que cada control que corresponde a la misma línea de tipo cajas de checkeo, tiene un identificador que garantiza que dicho control será tratado de manera independiente cuando sea enviado en un post.
ejemplohelper4
Este es el código que genera estas líneas en la página, dentro de una vista parcial, que se agrega usando AJAX:
ejemplohelper5
La magia del helper se hace realidad cuando usamos un Helper personalizado llamado BeginCollectionItem, justo en la primera línea del using.
ejemplohelper6
Este Helper realiza su trabajo agregándole a cada elemento dentro de la colección un identificador único, si se trata de checkbox. Dando como resultado una interface de usuario que le permite agregar dinámicamente una fila de controles que se tratan como un todo, pero que al vez pueden ser tratador como uno, en el caso de las opciones o botones de radio.
También podemos crear estos Helper usando los métodos de extensión de .NET, pero ese es tema de otro post, que publicare en el futuro.

No hay comentarios:

Publicar un comentario