Quelle est la meilleure méthode pour trouver un contrôle ASP.Net en utilisant jQuery?

Lors de la mise en œuvre de mon premier script significatif à l’aide de jQuery, je devais trouver un contrôle Web spécifique sur la page. Étant donné que je travaille avec DotNetNuke, rien ne garantit les contrôles ClientID, car le contrôle de conteneur peut changer de site à l’autre. J’ai fini par utiliser un sélecteur d’atsortingbut qui recherche un ID qui se termine par l’ID de serveur du contrôle.

$("select[id$='cboPanes']") 

Cela semble ne pas être la meilleure méthode. Y a-t-il une autre façon de faire cela?


@ Roosteronacid – Pendant que j’obtiens les contrôles que je veux, j’essaie de suivre les idiomes d’une technologie / d’un langage donné. Lorsque je programme en C #, j’essaie de le faire de manière à tirer le meilleur parti des fonctionnalités de C #. Comme il s’agit de mon premier effort pour réellement utiliser jQuery, et comme cela sera utilisé par des dizaines de milliers d’utilisateurs, je veux être sûr de créer un code qui soit également un bon exemple pour d’autres.

@toohool – cela fonctionnerait certainement, mais malheureusement, je dois conserver le javascript dans des fichiers séparés pour des raisons de performances. Vous ne pouvez pas vraiment tirer parti de la mise en cache si vous insérez du javascript dans la mesure où chaque “page” est générée dynamicment. Je finirais par envoyer le même code javascript au client encore et encore simplement parce que le contenu de la page a changé.


@ Roosteronacid – Pendant que j’obtiens les contrôles que je veux, j’essaie de suivre les idiomes d’une technologie / d’un langage donné. Lorsque je programme en C #, j’essaie de le faire de manière à tirer le meilleur parti des fonctionnalités de C #. Comme il s’agit de mon premier effort pour réellement utiliser jQuery, et comme cela sera utilisé par des dizaines de milliers d’utilisateurs, je veux être sûr de créer un code qui soit également un bon exemple pour d’autres.

@toohool – cela fonctionnerait certainement, mais malheureusement, je dois conserver le javascript dans des fichiers séparés pour des raisons de performances. Vous ne pouvez pas vraiment tirer parti de la mise en cache si vous insérez du javascript dans la mesure où chaque “page” est générée dynamicment. Je finirais par envoyer le même code javascript au client encore et encore simplement parce que le contenu de la page a changé.

 $("#<%= cboPanes.ClientID %>") 

Cela injectera dynamicment l’ID DOM du contrôle. Bien entendu, cela signifie que votre JS doit figurer dans un fichier ASPX et non dans un fichier JS externe.

Une chose que j’ai faite par le passé (en JavaScript pas jQuery), c’est ce que l’importation de JavaScript ci-dessus fait apparaître l’ID de contrôle dynamic similaire à celui recommandé par toohool et l’assignation à des variables que je référence dans mes importations de script.

Quelque chose comme cela devrait vous permettre de tirer parti de la mise en cache tout en vous permettant d’avoir les ID de client exacts:

    

Utilisez une classe de marqueur sur le contrôle et sélectionnez-la via jQuery.

À part être un peu plus cher, en termes de performances, je ne vois rien de mal à utiliser ce sélecteur. Après tout; vous obtenez les contrôles auxquels vous souhaitez accéder.