Je rencontre un problème avec <% = obj.ClientID%> expansion, dans un contrôle utilisateur .ascx.Expansion de ClientID dans une chaîne d'événement
Je dispose d'un fichier .js, contenant une fonction javascript:
function doSomething(objectId)
{
...
}
J'ai un fichier .ascx, avec quelques éléments html, et un élément de la onclick = Je veux appeler doSomething(), en passant l'ID d'un élément dans ce fichier .ascx, où l'identifiant transmis est d'un élément autre que celui sur lequel on clique, donc je ne peux pas utiliser "this".
Peut-être que ce serait plus clair avec un exemple.
Cela fonctionne:
<script type="text/javascript">
function redirect()
{
doSomething('<%= top.ClientID %>');
}
</script>
<div id="top" runat="server">
<img src="..." alt="..." onclick="redirect();"/>
</div>
Mais cela ne:
<div id="top" runat="server">
<img src="..." alt="..." onclick="doSomething('<%= top.ClientID %>');"/>
</div>
Quand je regarde la source, je vois que la <% =%> substitution n'a pas eu lieu, au lieu de " faire quelque chose ('ctl00_myControl_top'); " Je reçois "doSomething ('<% = top.ClientID%>');"
Pour une raison quelconque, l'expansion du script se produit dans le premier cas, mais pas dans le second. La solution de contournement, bien sûr, n'est pas acceptable car elle sera interrompue si j'inclue plusieurs copies du contrôle sur une page - seule la fonction "redirect()" d'une instance sera accessible.
Des idées sur comment faire ce remplacement de travail?
Vous avez la div à l'intérieur d'un tag de formulaire qui est runat = 'server' right? –
Le contrôle serveur entier est inclus dans une balise de formulaire avec les sections runat = "server", div et script à la fois. –