Generación de atributos con guiones en helpers MVC 3

ASP.NET MVCDesde la primera versión de ASP.NET MVC se permite añadir a la mayoría de los helpers que generan etiquetas HTML atributos personalizados. Para ello, se introducían objetos anónimos cuyas propiedades eran transformadas a atributos en el momento del renderizado, como en el siguiente ejemplo:
Llamada a TextBoxFor() con atributos personalizados
Este código generaría el siguiente marcado:

Marcado generado

Ahora que se van a poner muy de moda los atributos personalizados al estilo HTML5, como los “data-xxxx”, nos encontramos con un pequeño problema a la hora de introducirlos en objetos anónimos: los lenguajes como C# o VB no permiten el uso de guiones en los nombres de propiedades, por lo que si escribimos el siguiente código, se generará un error de compilación:

Uso de propiedad incorrecta
En ASP.NET MVC 3, por convención, es posible introducir este tipo de propiedades, pero utilizando el guión bajo (“_”) en lugar del guión medio (“-“). O en otras palabras, si queremos que el helper genere un atributo data-xx en el marcado HTML, debemos nombrar la propiedad del objeto anónimo como data_xx, tal y como se hace en el siguiente ejemplo:

Uso del guión bajo

… que generaría el siguiente marcado, correcto en HTML5:

image

Publicado en: Variable not found.

ObjectInfo y ServerInfo en MVC 3

ASP.NET MVCEn el nuevo ASP.NET MVC 3 me he topado con dos helpers que no conocía y que, a pesar de su sencillez, en ocasiones pueden resultar bastante interesantes: ObjectInfo y ServerInfo. Vamos a verlos muy rápidamente.

ObjectInfo

El primero de ellos puede sernos útil cuando queremos volcar el contenido completo de un objeto sobre la página, por ejemplo cuando estemos depurando. La forma general de utilización es la siguiente:

ObjectInfo.Print(objeto, profundidad, elementos_enumeracion)

Los parámetros son:

  • objeto, que es el objeto que queremos volcar.
  • profundidad, el número de niveles en caso de tratarse de objetos cuyas propiedades son, a su vez, otros objetos.
  • elementos_enumeracion, el número de elementos mostrados cuando se trata de colecciones.

Un ejemplo (con el motor WebForms):

<%: ObjectInfo.Print(Model, 2, 5) %>

El resultado será un contenido HTML maquetado de forma que pueda apreciarse muy claramente el contenido del objeto. En la siguiente captura de pantalla se observa el resultado, teniendo en cuenta que hemos enviado al helper un objeto que contiene un enumerable de Personas :

Resultado de ObjectInfo.Print()

ServerInfo

Por otra parte, el helper ServerInfo muestra información sobre el servidor en el que se está ejecutando la aplicación: configuración y variables de servidor, información del runtime y variables de entorno.

Su único método, que además no tiene parámetros, retorna el string HTML listo para ser incluido en la salida, por ejemplo así (en Razor):

@ServerInfo.GetHtml()

Y el resultado sería como el que sigue:

Resultado de ServerInfo.GetHtml()

Publicado en: Variable not found.