Je dois utiliser objChildControl.RenderControl ou objControl.RenderChildren pour rendre manuellement mes contrôles enfants. Mais il semble que ces méthodes sont incomplètes.RenderControl ou RenderChildren ASP.NET échouent
Tous mes contrôles enfants utilisent l'événement OnPreRender pour enregistrer les feuilles de style clientScript et client (car celles-ci ne peuvent être créées que dans l'événement prerender).
J'ai deux problèmes principaux, en passant l'objet System.Web.UI.Page actuel à un contrôle enfant et en vérifiant que l'événement OnPreRender est déclenché sur ces contrôles enfants.
Il semble que je ne puisse pas utiliser la méthode RenderControl sur mes contrôles enfants, car l'événement OnPreRender ne sera pas appelé. Je peux cependant passer l'objet Page par objChildControl.Page = Me.Page
Lorsque j'utilise RenderChildren, je ne peux pas passer l'objet Page, ou puis-je? Et je ne suis pas sûr si l'événement OnPreRender est même appelé quand j'utilise RenderChildren.
Une aide serait appréciée, depuis que je suis coincé;)
Mise à jour
J'ai trouvé un moyen d'obtenir le résultat que j'ai besoin, mais ce n'est pas la solution que je veux. Exemple:
code Je veux:
<wc:ParentControl id="objParent" runat="server" bla="etc">
<Content> <!-- This is an InnerProperty of the ParentControl --><DIV>bla bla bla bla.....<wc:SomeControl id="objSomeControl" runat="server" /><wc:3rdPartyControl id="obj3rdPartyControl" runat="server" /></DIV></Content>
</wc:ParentControl>
CodeBehind: objParentControl.Content.RenderControl (Writer)
Et les problèmes mentionnés ci-dessus commenceront. Comment s'assurer que pour tous les enfants dans le contenu on appellera OnPreRender?
codequi fonctionne (mais la méthode RenderControl est juste inutile):
<wc:ParentControl id="objParentControl" runat="server"></wc:ParentControl>
<wc:Content id="objContent" runat="server"><DIV>bla bla bla bla.....<wc:SomeControl id="objSomeControl" runat="server" /><wc:3rdPartyControl id="obj3rdPartyControl" runat="server" /></DIV></wc:Content>
Ensuite, il suffit d'utiliser la RenderBeginTag et RenderEndTag du wc: contrôle de contenu. Ensuite, l'événement OnPreRender est appelé. Mais je ne voulais pas intégrer le contenu dans le contrôle parent en utilisant un InnerProperty. Ensuite, restituer manuellement les contrôles enfants par RenderControl ou RenderChildren.