Autor en Google+
Saltar al contenido

Variable not found. Artículos, noticias, curiosidades, reflexiones... sobre el mundo del desarrollo de software, internet, u otros temas relacionados con la tecnología. C#, ASP.NET, ASP.NET MVC, HTML, Javascript, CSS, jQuery, Ajax, VB.NET, componentes, herramientas...

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, noticias, curiosidades, reflexiones... sobre el mundo del desarrollo
de software, internet, u otros temas relacionados con la tecnología

¡Microsoft MVP!
miércoles, 26 de enero de 2011
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.

Estos contenidos se publican bajo una licencia de Creative Commons Licencia Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0 España de Creative Commons

Aún no hay comentarios, ¡sé el primero!