2011-03-22 5 views

Répondre

2

Qu'est-ce que ASP.NET est normalement ne préfixe votre ID de contrôle avec une chaîne qu'il utilise pour déterminer où se trouve dans l'arborescence de contrôle ASP.NET votre contrôle réel. Dans cet esprit, ce que je fais normalement est d'utiliser le sélecteur 'ends with' de jQuery pour obtenir l'ID complet ASP.NET analysé au moment de l'exécution.

Quelque chose comme:

// get a handle on your original control 
var myControl = $('[id$="<myOriginalId>"]'); 
// and then access it's properties 
var myRuntimeId = myControl.eq(0).attr('id'); 

Comme vous pouvez l'imaginer plus, cela ne va pas le couper quand vous avez UserControls avec le même ID utilisé dans différents endroits de la forme. Je viens de sauter et mettre quelques réglages ici et là (probablement en utilisant la fonction .eq()) pour répondre à mes besoins d'affaires.

+0

merci, cela correspond parfaitement à ma situation avec peu de modification :) – mehul9595

2

Vous pouvez mettre une classe sur le usercontrol, puis utiliser quelque chose comme $ ("myUC "). Attr (" id")

+0

Je le fais aussi quand il le faut. Je pense que je devrais noter, cependant, que les classes d'éléments sont conçues sémantiquement pour être utilisées à travers plusieurs éléments dans votre DOM, donc quelque chose comme ça peut retourner plusieurs éléments en général. Eh bien, soit cela ou vous utilisez le nom de la classe comme ID de toute façon. –

+0

Je suis d'accord, un certain degré de contrôle doit être appliqué avec cette route. – RubbleFord

0

Cela peut vous aider à le voir sous un autre angle: Dans .Net, vous pouvez obtenir l'ID généré en utilisant myControl.ClientID.

Si vous mettez cela dans une variable javascript - je sais que ce n'est pas propre - vous pouvez alors facilement le récupérer.

<!--mypage.aspx--> 
<script> 
    var myIdVar = "<%=myControl.ClientID%>"; 
    if(myIdVar == "foo") 
    { 
    alert("bar"); 
    } 
</script> 
Questions connexes