- Html.ActionLink()
- Html.BeginForm()
- Html.CheckBox()
- Html.DropDownList()
- Html.EndForm()
- Html.Hidden()
- Html.ListBox()
- Html.Password()
- Html.RadioButton()
- Html.TextArea()
- Html.TextBox()
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:
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.
Este es el código que genera estas líneas en la página, dentro de una vista parcial, que se agrega usando AJAX:
La magia del helper se hace realidad cuando usamos un Helper personalizado llamado BeginCollectionItem, justo en la primera línea del using.
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