Je rencontre un problème avec un contrôle personnalisé rendant son contenu (contrôles enfants) en dehors de la balise, ce qui entraîne des erreurs et des problèmes d'exécution. Dans une tentative de simplifier les choses autant que possible, j'ai créé le contrôle ci-dessous, mais il a le même problème. J'ai essayé d'hériter de Control, WebControl et CompositeControl tous ayant pour résultat le même problème. Devinant il y a quelque chose d'évident que je me trompe ... Merci pour toute aide. L'ajout du contrôle a pour résultat un balisage en dehors de la balise de formulaire. L'ajout du contrôle via le balisage fonctionne correctement.asp.net contrôle personnalisé rendu en dehors de la balise de formulaire
protected void Page_Load(object sender, EventArgs e)
{
Controls.Add(new TestControl());
}
...
<body>
<form name="PageForm" method="post" action="default.aspx" id="PageForm">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTE5MDEwMTE5MWRkg0FopdvLhTPGxHkGm1xCCOVQz6A=" />
</div>
<div>
</div>
</form>
</body>
</html>
<span><input type="submit" name="ctl04$ctl00" value="TestControl!" /></span>
Je suis d'accord que cela fonctionnera mais ce n'est pas très intuitif surtout si quelqu'un d'autre utilise le contrôle et ne sait pas mieux. Comment se fait-il que les autres contrôles personnalisés ne requièrent pas cette approche? Controls.Add (nouveau bouton()); fonctionne très bien. Mon contrôle ne fonctionne pas. Qu'est-ce que je rate? – andleer
Il est plus courant d'inclure des contrôles utilisant un balisage déclaratif, puis d'ajouter manuellement des contrôles à ControlCollection. Vous pouvez associer l'espace de noms MyControls à un préfixe de balise, puis utiliser em comme: sinon, donnez plus d'informations sur votre problème –
baretta