2010-06-18 7 views
0

Sur une page ASP.NET, si les éléments ASP.NET tels que <asp:Texbox ID="Textbox1"> apparaissent à plusieurs endroits, sont-ils le même objet Zone de texte ou sont-ils des objets différents portant le même nom? Textbox1 "? Si la même chose, "pourquoi cela ne causera-t-il pas de conflits?"Contrôle Web ASP.NET avec le même ID

E.G. runat = texte "serveur" = » <% # Bind ("Nom")%> '> runat = texte "serveur"=' <% # Bind ("Nom") %> '>
'>

+0

Qu'est-ce que E.G. Ligne supposée être? – CkH

+0

Salut les gars, merci pour les réponses. Je semble avoir eu l'idée.Je ne l'ai pas expliquer ma question clearly.Basically j'avais un GridView et un contrôle detailsview sur la même page, chacun d'eux a un champ de modèle qui contient une zone de texte, avec un ID identique « textbox1 » .Mon compréhension est maintenant les deux objets TextBox sont déclarées à l'intérieur de l'objet gridview et des objets detailedview respectivement, afin qu'ils puissent avoir le même nom sans conflit. BTW il semble difficile d'écrire du code sur SO avec des balises '<>'? – Aperture

+0

Voir ma réponse mise à jour. –

Répondre

0

Déclarer les contrôles de la zone de texte à l'intérieur d'autres contrôles, par ex. Le contrôle gridview déclare à l'intérieur de l'objet du contrôle containning, c'est-à-dire qu'il ne déclare plus à l'intérieur de l'objet page aspx. Par conséquent, le nom peut être identique.

0

Selon votre mise à jour.

Si vous déclarez des contrôles (zones de texte) à l'intérieur d'un GridView ou tout autre contrôle qui autorise les contrôles imbriqués, le moteur ASP.NET crée en fait un ID unique pour lui (quelque chose comme ctl00_main_ddlCtrl). À partir de ASP.NET 4.0, vous pouvez contrôler les ID qu'il crée, les versions précédentes ne le sont pas.

+0

Salut, Merci pour votre réponse. Ma question était vraiment si '' apparaît dans plus d'un endroit dans une page ASPX, sont-ils le même objet ou différents objets dans des « domaines » séparés afin qu'ils puissent avoir le même identificateur d'objet sans provoquer de conflit? Je suppose qu'ils ne sont pas le même objet, mais je voudrais savoir un peu plus principe sous-jacent – Aperture

0

le comportement de ces éléments dépend du navigateur. Dans la spécification HTML est une exigence qu'un ID doit être unique. Ainsi, même si le navigateur accepte une telle page, le comportement peut être un peu off. Habituellement, aucun élément ne répond à un ID non unique.

1

Je crois que vous faites référence à Naming Containers en ce qui concerne les contrôles de base de données. Si vous avez une zone de texte à l'intérieur d'un répéteur, fondamentalement, ils vont rendre comme ceci:

<input name="Repeater1$ctl00$TextBox1" type="text" value="Text on row" id="Repeater1_ctl00_TextBox1" /> 
<input name="Repeater1$ctl01$TextBox1" type="text" value="Text on row" id="Repeater1_ctl01_TextBox1" /> 
0

La réponse à votre question est qu'ils ne sont pas des objets à tout le chemin que vous avez déclaré eux.

<asp:Textbox Id="TextBox1">SOMETEXT</asp:textbox> 
<asp:Textbox Id="TextBox1">SOMETEXT2</asp:textbox> 

Ce ne sont que des balises html avec la même propriété id. Regardez la source de la page Web et vous verrez qu'ils sont juste rendus sous forme de texte b/c le navigateur ne sait pas quoi faire w/tags. Au lieu de les convertir en entrées. Sans la balise Runat = "server", le compilateur ne les convertira pas en html avec les balises Id générées, elles ne seront pas non plus accessibles dans le code derrière. Lorsque vous ajoutez la balise runat = "server", vous devez remplacer les propriétés Id par des noms uniques, sauf dans le même contexte et donc ne pas avoir les mêmes identifiants. Fondamentalement, la réponse courte est, si vous voyez <asp:textbox... lorsque vous affichez la source via votre navigateur, vous n'avez pas déclaré vos zones de texte correctement. Au lieu de cela, vous devriez voir <input ...

+0

Salut compagnon, le problème est SO ne semble pas permettre l'affichage facile des gros morceaux de code, donc je ne peux pas vous laisser Voir la photo complète ... – Aperture

Questions connexes