Scénario:ASP.NET MVC Voir et jQuery.data()
J'ai une vue partielle qui est utilisé dans plusieurs endroits à travers mon application ASP.NET MVC. La vue partielle contient une liste des « objets » pour sélectionner, à savoir quelque chose de similaire à:
<ul>
<%
foreach (var person in Model.Persons)
{
%>
<li><a href="#" class="person">
<%= person.Name %></a></li>
<%
}
%>
</ul>
Chaque personne a un identifiant unique.
J'utilise jQuery pour mes trucs AJAXy, et jusqu'à présent, j'ai ajouté la fonctionnalité de clic sur les liens de la façon suivante (même si elle a une odeur très non-jQuery comme)
<a href="#" class="person" onclick="return selectPerson('<%= person.Id %>');">
<%= person.Name %></a>
Il fonctionne et tout, cependant il me faut aussi avoir une fonction javascript selectPerson() sur chaque page en utilisant cette vue partielle (puisque ce qui se passe dans le select est "spécial" pour chaque vue).
Je viens de tombé sur la méthode jQuery Data() et il semble être en mesure de soutenir mes besoins, à savoir dans les vues en utilisant ma vue liste des personnes partielle que je pouvais faire quelque chose comme:
$("a.person").click(function() { alert($(this).data("personId")); return false; });
Si je l'Id de attaché à la propriété de données "personId" sur les éléments DOM.
Maintenant, le problème que j'ai est que je fais le côté du serveur de rendu HTML, mais l'attachement de la propriété de données "personId" aux éléments DOM doit être fait côté client. C'est à dire. soit pendant la boucle foreach ou dans une boucle JS séparée mais je préférerais éviter cela.
Peut-être que je vais dans le mauvais sens, je ne sais pas, mais peut-être que quelqu'un a une solution pour cela ou peut-être une meilleure approche?
Edit (mise à jour pour plus de clarté):
D'une certaine façon execute
$ (sélectionnez le "courant" ancre) .data ("personId", ensemble à la valeur de person.Id)
Bien sûr cela pourrait fonctionner et j'ai pensé à cela, mais à mon humble avis - et vous pouvez m'appeler idéaliste :) - mais il doit y avoir une meilleure façon de le faire, c'est-à-dire garder mes données "structurées". Aussi avec jQuery.data() je pourrais potentiellement attacher un objet entier pas simplement "la clé". – veggerby
Quoique ce ne soit pas la meilleure solution, c'est le chemin que j'ai choisi, en raison du "manque" d'un meilleur moyen :(/ :) – veggerby