2009-06-02 11 views
2

De l'ASP.Net Page Lifecycle article on MSDN:Pourquoi certains événements des contrôles enfants se déclenchent-ils dans l'ordre inverse du cycle de page ASP.Net?

Bien que les deux Init et la charge se récursive sur chaque contrôle, ils se produisent dans l'ordre inverse. L'événement Init (et également l'événement Unload) pour chaque contrôle enfant se produit avant que l'événement correspondant soit déclenché pour son conteneur (bottom-up). Toutefois, l'événement Load pour un conteneur se produit avant les événements Load pour ses contrôles enfants (de haut en bas).

Cela fait beaucoup de sens pour l'événement unload, mais pourquoi pour init? Qu'en est-il des autres événements?

Cordialement,

Répondre

5

Cela est dû à la façon dont ces pages sont créées - les contrôles utilisateur sont des propriétés de la classe de la page. Ils sont créés (et donc initialisés) lors de l'initialisation de la classe, ce qui garantit que leurs instances sont disponibles pendant l'événement init du constructeur et de la page.

Ensuite, lorsque les événements load, prerender et render se produisent, l'événement de la page se déclenche en premier et cascade les événements pour tout ce qu'il contient.

Lors du déchargement et de l'élimination, les objets de propriété sont à nouveau traités.

Le modèle d'événement de page WebForm est un peu trop compliqué, à mon humble avis.