web-dev-qa-db-fra.com

Y a-t-il un inconvénient à définir ClientIDMode = Static sur chaque objet (défini sur le contenu principal de la page maître)

Je travaille sur le projet asp.net et à chaque fois j'ai besoin d'utiliser l'identifiant jquery $ (# "objectID"). Je dois changer le ClientIDMode sur chaque objet pour qu'il soit statique. Depuis que j'ai remarqué que le mode ID client par défaut est Inherit, j'ai défini le mode ID client MainContent pour qu'il soit statique et j'ai constaté que tout l'objet est devenu statique.

Cela permettra certainement de gagner beaucoup de temps lorsque vous travaillez avec jquery, mais je veux juste savoir s'il y a un inconvénient à cela et y a-t-il une raison pour laquelle ClientIDMode ne devrait pas être défini comme statique au départ?

28

Vous devez être prudent lorsque vous définissez ClientIDMode sur Static pour des éléments tels que les contrôles utilisateur, ou vous pourriez vous retrouver avec plusieurs éléments avec le même ID.

Pour les contrôles liés aux données tels que GridView, vous souhaiterez également utiliser la propriété ClientIDRowSuffix afin de vous assurer que chaque ligne est différenciée.

Cet article a quelques bons exemples.

18
Graham Clark

Une autre façon de gérer les ID en JavaScript serait de faire quelque chose comme ceci:

var something = '<%= btnId.ClientID %>';

Exemple: Si vous avez un contrôle de bouton comme celui-ci:

<asp:Button ID="btnId" runat="server"></asp:Button>    

et l'ID est traduit en id="ct100_ContentPlaceHolder1_btnId" alors vous pouvez utiliser la variable something pour accéder au contrôle.

4