2010-02-26 22 views
28

HTML5 permite el uso de atributos personalizados con el prefijo "data-" que pasa la validación sin el uso de una DTD personalizada (more info). En Asp.Net MVC, ¿hay alguna forma de especificar un ActionLink con un atributo de datos?¿Hay alguna manera de crear un ActionLink con atributos de datos HTML 5?

El método típico para añadir atributos a una ActionLink es pasar de un objeto anónimo, con una propiedad personalizada para cada objeto:

new { customattribute="value" } 

Lo que me gustaría hacer es:

new { data-customattribute="value" } 

Pero esto no funciona, porque el carácter de guion no es válido en los nombres de las propiedades. ¿Hay alguna forma de evitar esta restricción? ¿O simplemente tengo que elegir entre usar ActionLinks y usar data-attributes?

Respuesta

62

o puede utilizar

new { data_customattribute="value" }

y el compilador es suficientemente inteligente para saber lo que quiere decir

+1

Esta debería ser la respuesta aceptada. – InfinitiesLoop

+4

Esto solo funciona para MVC3 +. –

+2

sí para lograr la misma solución en la versión anterior a mvc3 debes usar la solución @ çağdaş –

20

Sí, hay una sobrecarga para el método ActionLink que toma un IDictionary<string,object> en lugar de un objeto anónimo.

<%=Html.ActionLink("text", "Index", "Home", null /*routeValues*/, 
    new Dictionary<string, object> { 
     { "data-customattribute", "value" }, 
     { "data-another", "another-value" } 
    })%> 

Salidas:

<a data-another="another-value" data-customattribute="value" href="/">text</a> 
+3

perfecto. Nota para los lectores futuros: si usa IDictionary para los atributos HTML, también debe usar un RouteDictionary para el parámetro routeValues ​​(puede usar la misma sintaxis que los atributos HTML utilizados anteriormente). – AaronSieb

+2

MVC le permite usar guiones bajos para resolver este problema. – Oliver

Cuestiones relacionadas