Saltar apartados

Helpers

Els helpers són una eina molt potent per a generar el nostre propi codi HTML dins de les vistes. Açò simplifica enormement el codi que es genera en la vista perquè evitem haver de generar molt codi en cada trucada a les vistes.

En moltes ocasions no solament la usarem per a generar HTML sinó per a treballar amb cadenes de text. Per exemple es pot usar per a truncar cadenes de text (en el tutorial de la tenda de música ho explica amb detall). Hem de recordar que la vista ha de ser molt llegible pel que hem d'evitar definir-nos funcions dins d'aquesta. Alguns autors pensen que és millor que tot estiga en la pròpia vista perquè així és més còmode de gestionar (ho posen al final de la vista). La nostra experiència ens indica el contrari, millor simplificar la vista i deixar la complexitat de la lògica a altres classes, que fins i tot ens permet poder reaprovecharlo en diverses vistes.

Anem a definir dues formes de treballar amb Helpers. En tots dos casos el primer és crear la carpeta Helpers en cas que no existira (botó dret sobre el projecte, Agregar, Nova carpeta).

Crear carpeta para crear helpers

En aquesta carpeta vam crear les classes (botó dret, Agregar, Classe …) per a la generació d'una etiqueta (label) amb l'opció de poder dir si el camp és obligatori o no

Per a açò vam crear una classe LabelHelperUA.cs amb el següent codi.

Modelo de clase

Que en resum el que fa és rebre l'identificador del camp al que fa referència, la descripció de l'etiqueta i si és obligatori o no. Prepara el codi amb cadascuna de les variable i amb l'opció de * en el cas que s'indique que el camp és obligatori. El resultat ho retorna com a text que podrà ser mostrat per la pantalla.

La forma de cridar-ho des de la vista és molt senzilla. Posem el nom de la classe amb el mètode concret que volem cridar. amb els seus paràmetres.

Llamada de helper desde la vista

Però per a poder trobar la classe hem d'incloure una referència a la carpeta on es troben els helpers. El general serà en “Projecte”.Helpers. Usarem la directiva Import per a incloure la(s) classe(s).

Referencias para usar los helpers

En el cas anterior hem creat una classe independent a Html que és la classe per defecte que cridem per a les operacions bàsiques en les vistes.

Es pot estendre els mètodes de la classe Html per a incloure les nostres pròpies funcions. Un exemple molt simple pot ser per a generar el codi dels nostres menús.

En aquest cas ens vam crear una classe igual que abans però que ha de ser de tipus static (tant la classe com els mètodes) i tenir com a nom LabelExtensions. D'aqueixa manera s'inclouran els mètodes que definim a la classe Html d'una forma transparent.

En l'exemple següent fem ús de StringBuilder per a accelerar el treball amb cadenes de text i al final, i igual que abans , retornem una cadena de text amb el codi HTML resultant. Dins de la classe fem ús d'altres mètodes de la classe Html, ja que disposem d'un paràmetre de tipus HtmlHelper, que ens ho permet.

Ejemplo de helper html

Un exemple més complex d'ús d'Helpers és la possibilitat de definir una etiqueta (label) com en el primer cas, però sense haver de definir si és obligatori o no. Aquesta informació l'obtindrem de la definició del model (mirar validació de models).

La ubicació dels mètodes es farà d'igual manera que abans (dins de les classe LabelExtensions), però a diferència d'abans anem a retornar MvcHtmlString en comptes d'una simple cadena de teste. Els paràmetres són alguna cosa diferents i es fa una trucada a un altre mètode amb la informació de la validació del model.

D'aqueixa manera podrem consultar informació com el nom, si és requerit, etc.,

Generem totes les etiquetes amb TagBuilder (no estem retornant una cadena de text, açò l'hem de tenir clar) i anem assignant els atributs a l'etiqueta HTML i la descripció de l'etiqueta.

Ejemplo de un helper avanzado

Pot semblar més complicat, però en ser tan modular és molt senzill de comprendre i sobretot d'ampliar.

Enllaços interessants

Servei d'Informàtica ASP.NET MVC 2 Framework


Universitat d'Alacant
Carretera de Sant Vicent del Raspeig s/n
03690 Sant Vicent del Raspeig
Alacant (Spain)

Tel: (+34) 96 590 3400

Fax: (+34) 96 590 3464

Per a més informació: informacio@ua.es, i per a temes relacionats amb aquest servidor web: webmaster@ua.es

Carretera de Sant Vicent del Raspeig, s/n - 03690 Sant Vicent del Raspeig - Alacant - Tel.: 96 590 3400 - Fax: 96 590 3464