Comment spécifier une propriété avec - au nom
-
09-10-2019 - |
Question
J'utilise ASP.NET MVC avec jquery mobile dans une application Web. Je veux générer un lien:
<a href="/Whatever/Previous" data-role="button" data-icon="arrow-l">Previous</a>
J'ai une méthode d'extension d'aide qui me permet de faire:
<%= Html.ActionLink<WhateverController>(c => c.Previous(),
"Previous",
new { data-role = "button", data-icon="arrow-l" } ) %>
Sauf data-role
et data-icon
ne sont pas valides que les noms de propriété en C #. L'utilisation @data-role
ne fonctionne pas non plus.
Y at-il une syntaxe de travail autour de cela? Ou suis-je coincé avec la création d'une aide plus spécialisée qui connaît les noms d'attributs corrects.
La solution
Vous devriez pouvoir utiliser IDictionary<string, object>
au lieu de l'objet anonyme:
Html.ActionLink<WhateverController>(c => c.Previous(),
"Previous",
new Dictionary<string, object>
{
{ "data-role", "button" },
{ "data-icon", "arrow-l"}
})
Autres conseils
En plus de la réponse de svick, nous avons fait un changement net dans ASP.NET MVC 3 où les propriétés qui ont un trait de soulignement en eux auront automatiquement les underscores convertis en tirets.
Donc, si vous avez du code comme ceci:
<%= Html.ActionLink<WhateverController>(c => c.Previous(),
"Previous",
new { data_role = "button", data_icon="arrow-l") %>
Il rend le balisage avec des tirets:
<a href="/Whatever/Previous" data-role="button" data-icon="arrow-l">Previous</a>
Parce que le caractère est aussi la soustraction / unaire opérateur moins que vous ne pouvez pas l'utiliser dans un identifiant. Je pense que la méthode d'assistance personnalisée est probablement votre meilleur pari.