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 !