J'ai fait un peu de recherches relatives aux contrôles dynamiques et à la vision. P>
Et j'ai lu que pour conserver la viewstate pour un contrôle dynamique, vous devez l'ajouter dans l'événement Page_Init. C'est logique parce que le pagélifécycle est: p>
Mais j'ai fait une application de test et j'ai vu que les valeurs de visualisation et de propriétés sont préservées même si j'ajoute le contrôle de l'événement Page_Load et non après. D'après cela, je n'ai trouvé que des informaton contradictoires. Certains disent que les commandes peuvent rattraper le pagélifecycle d'autres disent que vous devez les ajouter dans la page_Init. Quelqu'un peut-il clarifier cela pour moi? P>
aussi dans msdn j'ai trouvé: p>
Note Vous pourrez peut-être vous éloigner de vos commandes dans le Page_load gestionnaire d'événements et maintien de l'état de vue correctement. Ce Tout dépend de si vous définissez ou non des propriétés de la Contrôles de manière dynamique chargée de manière programmatique et, si oui, quand vous êtes le faire par rapport à la ligne Controls.add (dynamiccontrol). Une enquête approfondie la discussion de ceci est un peu au-delà de la portée de cet article, mais le Raison que cela peut fonctionner est parce que la méthode ADD () de la propriété Controls charte récursivement l'état de vue du parent dans ses enfants, même Bien que la scène de l'état de vue de la charge ait été adoptée. P> blockQuote>
Mais je ne comprends pas vraiment cela complètement, j'espère que quelqu'un peut l'expliquer. Merci d'avance. P>
3 Réponses :
Ce code le démontrera en action: Donc, si vous modifiez le contrôle une fois ajouté au formulaire, il conserve sa visualisation, mais si vous le modifiez avant de l'ajouter à La forme Le texte ne le fait pas dans la vision. C'est qu'est-ce que em> arrive - exactement pourquoi em> c'est comme si c'était une autre question (c'est en fait l'inverse de ce que j'aurais pensé lire les docs). P> < p>
J'ai oublié de mentionner - essentiellement cela est dû au fait que le contrôle joue via le cycle de vie de la page avec la page lorsqu'il est ajouté à l'arborescence de contrôle via Controls.add () - Il y a des articles sans fin parce que Il n'y en a pas beaucoup à ce sujet qui est simple. p> p>
Dans le passé (ASP.NET 2.0 ou 3.5, pas sûr), lorsque vous essayez de mettre en œuvre la même chose que vous le mentionnez, je devais ajouter les commandes dans la page_Init. Les ajoutant dans la page_LOAD que je ne verrais pas que les modifications apportées à la côte du client arrivent sur le côté du serveur, ce qui permet un sens parfait parce que lorsque le cadre tentait de lier la vision des contrôles, ils n'ont pas encore été créés. P >
Je suis très surpris de savoir que cela est changé. Peut-être quelque chose introduit dans asp.net 4.0? P>
in Net 4.5 simplifie simplement la méthode CreateChildControls () et place dans le bâtiment Dynamic Controls. P>