HTML et C# [Résolu]

Signaler
Messages postés
112
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
13 juin 2010
-
Messages postés
112
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
13 juin 2010
-
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.

SVP c'est important !

Merci !

5 réponses

Messages postés
112
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
13 juin 2010
2
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"]

Voilà !

J'espere que ça servira à quelqu'un !
Messages postés
249
Date d'inscription
samedi 13 octobre 2007
Statut
Membre
Dernière intervention
2 mai 2014

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)
Messages postés
112
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
13 juin 2010
2
Merci !

Je vais essayer ça !

:)
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
22
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

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
112
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
13 juin 2010
2
Bonjour,

Malheureusement développer des site web est un peu difficile pour moi. Merci pour l'information.

Cordialement !