Cómo especificar una propiedad con - en el nombre
-
09-10-2019 - |
Pregunta
Estoy utilizando ASP.NET MVC junto con jquery mobile en una aplicación web. Quiero generar un enlace:
<a href="/Whatever/Previous" data-role="button" data-icon="arrow-l">Previous</a>
Tengo un método de extensión de ayuda que me permite hacer:
<%= Html.ActionLink<WhateverController>(c => c.Previous(),
"Previous",
new { data-role = "button", data-icon="arrow-l" } ) %>
A excepción data-role
y data-icon
no son válidos como nombres de propiedad en C #. Usando @data-role
no funciona bien.
¿Hay alguna sintaxis para el trabajo alrededor de esto? O estoy atascado con la creación de un ayudante más especializado que conoce los nombres de los atributos correctos.
Solución
debería ser capaz de utilizar IDictionary<string, object>
en lugar del objeto anónimo:
Html.ActionLink<WhateverController>(c => c.Previous(),
"Previous",
new Dictionary<string, object>
{
{ "data-role", "button" },
{ "data-icon", "arrow-l"}
})
Otros consejos
Además de la respuesta de svick, se hizo un cambio ordenado en ASP.NET MVC 3 donde las propiedades que tienen un subrayado en ellos tendrán automáticamente los subrayados convierten en guiones.
Por lo tanto, si usted tiene un código como este:
<%= Html.ActionLink<WhateverController>(c => c.Previous(),
"Previous",
new { data_role = "button", data_icon="arrow-l") %>
Se hará que el marcado con guiones:
<a href="/Whatever/Previous" data-role="button" data-icon="arrow-l">Previous</a>
Debido a que el carácter es también la sustracción / operador menos unario no se puede utilizar en un identificador. Creo que el método de ayuda personalizado es probablemente su mejor apuesta.