11
votes

Obtenir une pièce d'identité du serveur ASP.NET Runat à JQuery

J'essaie de faire des choses en jQuery en utilisant ASP.NET. Mais l'identifiant de runat = "serveur" code> n'est pas identique à celui utilisé dans HTML.

Je l'utilisais pour obtenir l'identifiant de cette situation: P>

< input runat="server" id="txtTest" value="test" />


1 commentaires

Qu'est-ce que cela résulte effectivement pour l'ID de la zone de texte et le% = txtest.clientid%>?


8 Réponses :


22
votes

<% = txtestest.clientid%> doit fonctionner mais pas dans un fichier JavaScript séparé où les scripts latéraux du serveur n'exécutent pas. Une autre possibilité est d'utiliser un sélecteur de classe: xxx

puis: xxx


2 commentaires

Wow! Cela fonctionne ... J'ai mis ma fonction dans ma page ASCX, et cela fonctionne maintenant. La partie de classe que je connaissais (mais merci aussi pour la pointe), et cela fonctionne dans un JavaScript séparé (en classe). Il y a aucun moyen à Runat Server ID fonctionne dans ma page Function.js? script_path: script / fonction.js ascx_path: composants / contact.Scx Cordialement


Il n'y a aucun moyen de mettre le code d'identification ASP.NET dans un fichier JS, ASP.NET ne regardera pas à l'intérieur là pour mettre sa valeur.



1
votes

Pour éviter les problèmes avec les identifiants rendus, utilisez plutôt une classe. Cela ne changera pas pendant le rendu: xxx

html: xxx


2 commentaires

Aussi regarde beaucoup Natre pourrais-je ajouter


Il pourrait ne pas fonctionner comme prévu: la classe in jQuery était txttest , dans HTML diffère: txttext - TYPO?



2
votes

Essayez de le mettre dans un nom de variable: xxx

Je ne sais pas si le <% = aime être dans des guillemets doubles. J'ai toujours eu des comportements mitigés lorsqu'il n'utilise pas la citation unique.


1 commentaires

Cela ne fonctionne pas aussi. Même chose que mon échantillon, mais merci pour le conseil de toute façon = D PS: J'ai utilisé les guillemets simples cette fois-ci. = X



2
votes

Lorsque vous utilisez ASP.NET 4 et la clientIdMode est définie sur "prévisible", vous pouvez prédire l'ID basé sur la hiérarchie. Ou réglez-le défini sur "statique", donc ASP.NET ne le gâte pas.

article de Scotgu sur celui-ci http://weblogs.asp.net/scotgu/archive/2010/03/30/cleaner-html- Markup-with-ASP-Net-4-Web-Forms-Client-IDS-VS-2010-and-Net-4-0-Series.aspx

Et ceci est extrêmement utile lorsque vous utilisez des scénarios de fichiers JS externes.


0 commentaires

2
votes

comme Darin Dimitrov dit dans sa réponse:

code> strong> devrait fonctionner mais pas dans un javascript séparé Fichier où les scripts latéraux du serveur n'exécutent pas strong>. p> blockQuote>

Les solutions que je pouvais trouver pour celles-ci sont: p> xxx pré>


  • Utilisez class code> au lieu de ID code> li> ul>

    Utilisation de la classe, vous pouvez récupérer la valeur n'importe où. C'est l'une des meilleures solutions (généralement les meilleures) p> xxx pré>


    • Utilisez ClientID CODE> CODE dans le ASPX CODE> LI> ul>

      Vous pouvez toujours appeler clientide code> dans l'ASPX, mais si vous travaillez avec une sorte de structure, ce n'est pas la meilleure solution. J'aime utiliser cette méthode lorsque je teste quelque chose. P> xxx pré>

      Vous pouvez également utiliser clientide code> dans un fichier JS externe avec une solution de contournement. Ce n'est pas joli fort>, utilisez uniquement si vous en avez vraiment besoin. Je fais habituellement cela lorsque j'utilise Telerik code>. P>

      dans l'ASPX: p> xxx pré>

      dans le fichier JS: P >

      var value = $('#txtTest').val();
      
      • Utilisez Control.ClientidMode de propriété statique code> li> ul>

        de sorte que le HTML devienne p> xxx pré>

        et que le JS peut l'appeler comme il est nommé p> xxx pré> P> Le problème avec cette solution est que vous devez être très fort> prudent pour éviter la duplicité sur le IDS code> de votre page. Essayez jamais d'utiliser Mode statique code> dans un contrôleur. P>

        comme états MSDN: P>

        La valeur clientide est définie sur la valeur de la propriété ID. Si la Le contrôle est un conteneur de nommage, le contrôle est utilisé comme le dessus de la Hiérarchie de conteneurs de dénomination pour tous les contrôles qu'il contient. P> blockQuote>


        Le lien de La réponse de Shaans est un endroit génial pour vérifier des informations supplémentaires sur la clientIdMode. p>

        Nettoyant HTML Markup avec ASP.NET 4 Formulaires Web - ID de client (VS 2010 et série 4.0) p> p>


0 commentaires

5
votes

Comme d'autres personnes ont mentionné, vous pouvez passer un sélecteur de classe à JQuery, mais c'est un peu désordonné. Je préfère utiliser le Attribut JQuery se termine par sélecteur . Étant donné qu'un identifiant généré est une hiérarchie aplatie de commandes, vous pouvez utiliser les "extrémités avec" sélecteur pour trouver votre élément.

$("input[id$='txtText']")


0 commentaires

5
votes

dans WebForm / HTML Page ....

var UserName = $("[id*=txtUserName]").val();
alert(UserName);


2 commentaires

Cette méthode est pour ... ASP.NET Control ...


Cette réponse fonctionnera - si vous souhaitez sélectionner des éléments que ID contient une chaîne donnée ..



-1
votes

Ajout d'une classe CSS à l'entrée puis à l'aide de cette classe dans JQuery pour que l'élément d'entrée résoudra le problème.


1 commentaires

Des questions que nous prévoyons des tentatives de code. Même nous pouvons utiliser le code dans nos réponses pour illustrer.