J'essaie d'utiliser des attributs de données HTML5 dans mon projet ASP.NET MVC 1. (Je suis un débutant en C # et ASP.NET MVC.)
<%= Html.ActionLink("« Previous", "Search",
new { keyword = Model.Keyword, page = Model.currPage - 1},
new { @class = "prev", data-details = "Some Details" })%>
Les "données-détails" dans les htmlAttributes ci-dessus donnent l'erreur suivante:
CS0746: Invalid anonymous type member declarator. Anonymous type members
must be declared with a member assignment, simple name or member access.
Cela fonctionne lorsque j'utilise data_details, mais je suppose que cela doit commencer par "data-" conformément aux spécifications.
Mes questions:
- Existe-t-il un moyen de faire fonctionner cela et d'utiliser des attributs de données HTML5 avec Html.ActionLink ou des aides Html similaires?
- Existe-t-il un autre mécanisme alternatif pour attacher des données personnalisées à un élément? Ces données doivent être traitées ultérieurement par JS.
Réponses:
Mise à jour: MVC 3 et les versions plus récentes ont un support intégré pour cela. Voir la réponse très appréciée de JohnnyO ci-dessous pour les solutions recommandées.
Je ne pense pas qu'il existe d'auxiliaires immédiats pour y parvenir, mais j'ai deux idées à essayer:
Juste des idées, je ne l'ai pas testé.
la source
Ce problème a été résolu dans ASP.Net MVC 3. Ils convertissent désormais automatiquement les traits de soulignement des propriétés d'attribut html en tirets. Ils ont eu de la chance sur celui-ci, car les traits de soulignement ne sont pas légaux dans les attributs html, donc MVC peut impliquer en toute confiance que vous souhaitez un tiret lorsque vous utilisez un trait de soulignement.
Par exemple:
rendra ceci dans MVC 3:
Si vous utilisez toujours une ancienne version de MVC, vous pouvez imiter ce que fait MVC 3 en créant cette méthode statique que j'ai empruntée au code source de MVC3:
Et puis vous pouvez l'utiliser comme ceci:
et cela rendra l'attribut data- * correct:
la source
WebGrid.GetHtml(htmlAttributes: new { data_some : "thing" })
. : '(RouteValueDictionary
intégré dans lesHtml.Something()
méthodes de MVC3 . Il est possible que la versionWebGrid
n'ait pas été mise à niveau de la même manière, ou vous pouvez vérifier la version sur leSystem.Web.Helpers.dll
C'est encore plus facile que tout ce qui est suggéré ci-dessus. Les attributs de données dans MVC qui incluent des tirets (-) sont pris en charge avec l'utilisation du trait de soulignement (_).
Je vois que JohnnyO l'a déjà mentionné.
la source
En mvc 4 pourrait être rendu avec Underscore ("_")
Le rasoir:
Html rendu
la source
data-date
attribut, comment pourrais-je le publier sur le contrôleur / l'action? Aussi ce qui est% 23 làVous pouvez l'implémenter avec une nouvelle fonction d'extension d'assistance HTML qui sera ensuite utilisée de manière similaire aux ActionLinks existants.
Et vous l'appelez comme ça ...
Simples :-)
Éditer
un peu plus d'écrire ici
la source
J'ai fini par utiliser un lien hypertexte normal avec
Url.Action
, comme dans:C'est plus laid, mais vous avez un peu plus de contrôle sur le
a
tag, ce qui est parfois utile dans les sites fortement AJAXifiés.HTH
la source
Je n'aime pas utiliser une balise "a" pure, trop de frappe. Je viens donc avec une solution. En vue, il semble
Implémentation de la classe Dic
la source
t
à la fin au moins!Vous pouvez l'utiliser comme ceci:
En Mvc:
En Html:
la source