The Red Man
Messages postés111Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention13 juin 2010
-
6 mai 2008 à 10:10
The Red Man
Messages postés111Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention13 juin 2010
-
8 mai 2008 à 12:49
Bonjour à tous,
J'aimerai savoir comment peut récupérer un id ou name d'un "composant" html à partir du code-behind C# ???!!!
voici mon extrait de code :
<select id="e" name="e">
...
</select>
<textarea id="t" name="t"></textarea>
De plus, ce code htlm est généré depuis le code-behind et envoyé a un literal.
The Red Man
Messages postés111Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention13 juin 20102 7 mai 2008 à 01:17
j'ai trouvé la solution.
Voici l'explication :
Si avez du contenu HTML dans votre page ASPX, vous devez pour chaque control HTML spécifier à la fois l'id du control et le fameux runat= "server". A partir du code-behind (pour ma part C#), vous pourrez très facilement récupérer ce control en faisant ceci :
this.IdControlHTML.{ Property, Methods,... }
Par exemple :
// contenu .aspx
<select id="Mouaa" runat="server">
<option id="Option1" value="1">1</option>
<option id="Option2" value="2">2</option>
</select>
// code-behind .cs
this.Mouaa.visible = false;
Si vous générez du HTML à partir du code-behind pour le stocker dans un div, panel ou literal. Il suffira dans ce cas utiliser Request.Form[HtmlControlName] (HtmlControlName = string name).
Or pour utiliser ceci il faut bien seulement spécifier la propriété name.
Par exemple :
// contenu .cs
// admettons que le contenu html généré et comme ceci
<select id ="Mouaa" name="Mouaa">
<option id="Option1" value="1">1</option>
<option id="Option2" value="2">2</option>
</select>
Pour récupérer la valeur de la sélection, il suffira de faire : Request.Form["Mouaa"]
yassinebennani
Messages postés249Date d'inscriptionsamedi 13 octobre 2007StatutMembreDernière intervention 2 mai 2014 6 mai 2008 à 12:41
Bonjour
Ajout la propriété runat="server" et tu va le retrouver son id dans le code behind.
<textarea id="TextArea1" cols="20" rows="2" runat="server">
______________________________________________________________
Yassine BENNANI - Ingénieur en génie logiciel & multimédia (Consultant SI)
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 8 mai 2008 à 00:05
Bonjour,
Cette approche n'est pas du tout conventionnel pour ASP.net ... Je ne comprend pas ce que tu cherches à faire exactement, mais je te conseille de penser "controle" et non génération de HTML comme en php ...
En fait chaque page est compilé dans une page qui hérite de ton code-behind. Cette classe est invisible pour toi, c'est ASP.net qui la génére pour toi. Lors du parsing de la page aspx (pour pouvoir la compiler) le parseur vachercher toutes les balises ayant l'attribut runat="server" si cette attribut est présent alors il va déclarer une variable avec la propriété id (ou alors un id autogénéré) du type de ta balise. C'est pour ca que rajouter runat="server" permet d'avoir accès au contrôles dans le code-behind. Mais attention si tu utilises une masterpage ou un UserControl l'id du contrôle ne sera pas forcément l'id généré, il faut alors regarder la propriété ClientID