9
votes

Définir clientId dans ASP.NET

est-il possible de définir le client de n'importe quel contrôle ASP.NET Server? Comment puis-je faire cela?


1 commentaires

Expliquez ce que vous essayez d'atteindre, puis nous pourrions peut-être suggérer une alternative.


7 Réponses :


3
votes

Ce n'est pas possible. Le clientIide est généré par ASP.NET. De MSDN :

La valeur clientide est générée par concaténer la valeur d'identification de la contrôle et la valeur unique de son Contrôle des parents. Si la valeur d'identification de Le contrôle n'est pas spécifié, un La valeur générée automatiquement est utilisée.


0 commentaires

1
votes

Même je pense que ce n'est pas possible dans Visual Studio 2008. Parce que Control.clientid propriété a Seulement obtenir la méthode

Edit: mais dans Visual Studio 2010 (.NET 4.0), il est possible


1 commentaires

Comment est-ce possible? Dans vs2015, cette méthode ne reçoit toujours que.



0
votes

Ceci est une fonctionnalité ASP.NET 4.0.


0 commentaires

19
votes

La bonne nouvelle est que dans vs 2010.net 4, vous aurez Contrôle complet sur les identifiants clients !

toujours pour les versions actuelles de .NET, vous pouvez faire due. Je suppose que vous avez besoin de l'identifiant pour JavaScript. Si oui, obtenez simplement l'identifiant comme si: P>

<script type="text/javascript">
    var myTextBox = $('#<%=TextBox1.ClientID%>');
</script>


3 commentaires

+1 pour être un Jedi et lire l'esprit d'Ebattulga, "obtenez-vous client, je n'ai pas défini"


N'oubliez pas de mettre le signe # devant le <% = en attendant que vous souhaitez obtenir l'objet DOM réel et non seulement le texte du clientIide du contrôle.


Thx @ kswift87 c'est absolument raison. J'ai mis à jour ma réponse



3
votes

Je conseillerais de le faire, sauf si vous êtes sûr de vouloir le faire, mais il y a un moyen. Vous pouvez remplacer la propriété clindide à partir du contrôle du serveur. XXX

Mais d'autres l'ont noté, vous ne pouvez pas le faire de l'extérieur. < / p>


0 commentaires

1
votes

ASP.NET 4 a une propriété clientIdMode sur chaque contrôle pour cela. Si vous voulez éteindre le clientid complètement Vous pouvez utiliser ce truc - ça marche pour Toute commande non-postback


0 commentaires

0
votes

pour vs 2010, .NET 4.0:

Si vous essayez simplement de définir ctrl.clientid = "strinet" Vous obtiendrez une erreur en disant que le clientIide est lu uniquement. Vous pouvez contrôler la valeur de clientId à l'aide de clientIdMode - qui définit l'algorithme avec lequel ClientID est défini: xxx

Le marquage HTML marquera HTML de votre contrôle avec l'ID de la commande. Ainsi, vous avez un certain degré de contrôle du code-derrière.


0 commentaires