Le code suivant ne fonctionne pas. Le balisage est dans un contrôle utilisateur et je suppose que c'est pourquoi ClientID renvoie le mauvais préfixe pour l'ID TextBox.ASP.Net: ID client n'est pas correct dans le code-behind d'un contrôle utilisateur
Markup:
<INPUT id="txtName" runat="server" maxlength="50" style="WIDTH:100px">
<INPUT type="button" value="Find Your Doctor" id="btnFind" runat="server"
style="MARGIN-LEFT:10px;WIDTH:130px">
code-behind:
btnFind.Attributes.Add("onClick",string.Format("DoctorLink
('{0}',document.getElementById('{1}').value,{2});",
row["ZipCode"],
txtName.ClientID));
Résultats dans le navigateur:
<input name="DoctorsMainArea1$ctl01$txtName" type="text"
id="DoctorsMainArea1_ctl01_txtName" maxlength="50" style="WIDTH:100px" />
<input name="DoctorsMainArea1$ctl01$btnFind" type="button"
id="DoctorsMainArea1_ctl01_btnFind" value="Find Your Doctor" style="MARGIN-
LEFT:10px;WIDTH:130px" onClick="PrepareDoctorLink('90210',
document.getElementById('DoctorsMainArea1_ctl00_txtName').value);" />
Comme vous pouvez le voir, le paramètre de l'appel JavaScript est DoctorsMainArea1_ctl00_txtName
, mais l'ID réel de l'élément d'entrée est DoctorsMainArea1_ctl01_txtName
.
Une idée pour résoudre ce problème? jQuery? Je ne suis pas tellement intéressé par une explication de ce qui se passe (peut-être qu'il y a un autre contrôle sur cette page qui interfère), mais une manière plus robuste de résoudre le problème.
pourquoi avez-vous besoin d'utiliser document.getElementById lorsque son l'événement onclick pour le même contrôle que vous essayez de récupérer? Pouvez-vous pas utiliser « ce » (qui retournera la boîte d'entrée. Ensuite, vous wont besoin même d'essayer de travailler sur l'identité, et vous n'aurez pas besoin runat = « server ». – RPM1984
Le gestionnaire onclick pour le bouton est assemblé côté serveur car j'ai besoin du code postal et d'autres paramètres que j'ai supprimés pour rendre le code plus facile à lire. – cdonner
Modifiez-vous l'arborescence de contrôle après la lecture de ClientID? – sisve