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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top