Saltar apartados

Helpers

Los helpers son una herramienta muy potente para generar nuestro propio código HTML dentro de las vistas. Esto simplifica enormemente el código que se genera en la vista porque evitamos tener que generar mucho código en cada llamada a las vistas.

En muchas ocasiones no sólo la usaremos para generar HTML sino para trabajar con cadenas de texto. Por ejemplo se puede usar para truncar cadenas de texto (en el tutorial de la tienda de música lo explica con detalle). Tenemos que recordar que la vista debe ser muy legible por lo que debemos evitar definirnos funciones dentro de ésta. Algunos autores piensan que es mejor que todo esté en la propia vista porque así es más cómodo de gestionar (lo ponen al final de la vista). Nuestra experiencia nos indica lo contrario, mejor simplificar la vista y dejar la complejidad de la lógica a otras clases, que incluso nos permite poder reaprovecharlo en varias vistas.

Vamos a definir dos formas de trabajar con Helpers. En ambos casos lo primero es crear la carpeta Helpers en caso de que no existiera (botón derecho sobre el proyecto, Agregar, Nueva carpeta).

Crear carpeta para crear helpers

En dicha carpeta creamos las clases (botón derecho, Agregar, Clase …) para la generación de una etiqueta (label) con la opción de poder decir si el campo es obligatorio o no

Para ello creamos una clase LabelHelperUA.cs con el siguiente código.

Modelo de clase

Que en resumen lo que hace es recibir el identificador del campo al que hace referencia, la descripción de la etiqueta y si es obligatorio o no. Prepara el código con cada una de las variable y con la opción de <em>*</em> en el caso de que se indique que el campo es obligatorio. El resultado lo devuelve como texto que podrá ser mostrado por la pantalla.

La forma de llamarlo desde la vista es muy sencilla. Ponemos el nombre de la clase con el método concreto que queremos llamar. con sus parámetros.

Llamada de helper desde la vista

Pero para poder encontrar la clase tenemos que incluir una referencia a la carpeta dónde se encuentran los helpers. Lo general será en “Proyecto”.Helpers. Usaremos la directiva Import para incluir la(s) clase(s).

Referencias para usar los helpers 

 

En el caso anterior hemos creado una clase independiente a Html que es la clase por defecto que llamamos para las operaciones básicas en las vistas.

Se puede extender los métodos de la clase Html para incluir nuestras propias funciones. Un ejemplo muy simple puede ser para generar el código de nuestros menús.

En este caso nos creamos una clase al igual que antes pero que debe ser de tipo static (tanto la clase como los métodos) y tener como nombre LabelExtensions. De esa manera se incluirán los métodos que definamos a la clase Html de una forma transparente.

En el ejemplo siguiente hacemos uso de StringBuilder para acelerar el trabajo con cadenas de texto y al final, y al igual que antes , devolvemos una cadena de texto con el código HTML resultante. Dentro de la clase hacemos uso de otros métodos de la clase Html, ya que disponemos de un parámetro de tipo HtmlHelper, que nos lo permite.

Ejemplo de helper html

Un ejemplo más complejo de uso de Helpers es la posibilidad de definir una etiqueta (label) como en el primer caso, pero sin tener que definir si es obligatorio o no. Esta información la obtendremos de la definición del modelo (mirar validación de modelos).

La ubicación de los métodos se hará de igual manera que antes (dentro de las clase LabelExtensions), pero a diferencia de antes vamos a devolver MvcHtmlString en vez de una simple cadena de testo. Los parámetros son algo diferentes y se hace una llamada a otro método con la información de la validación del modelo.

De esa manera podremos consultar información como el nombre, si es requerido, etc.,

Generamos todas las etiquetas con TagBuilder (no estamos devolviendo una cadena de texto, esto lo tenemos que tener claro) y vamos asignando los atributos a la etiqueta HTML y la descripción de la etiqueta.

Ejemplo de un helper avanzado 

Puede parecer más complicado, pero al ser tan modular es muy sencillo de comprender y sobre todo de ampliar.

 

Enlaces interesantes

Servicio de Informática ASP.NET MVC 2 Framework


Universidad de Alicante
Carretera de San Vicente del Raspeig s/n
03690 San Vicente del Raspeig
Alicante (Spain)

Tel: (+34) 96 590 3400

Fax: (+34) 96 590 3464

Para más información: informacio@ua.es, y para temas relacionados con este servidor Web: webmaster@ua.es

Carretera San Vicente del Raspeig s/n - 03690 San Vicente del Raspeig - Alicante - Tel. 96 590 3400 - Fax 96 590 3464