2009-09-28 6 views

Répondre

7

ASP.NET Page Lifecycle

  • PreInit
  • Init
  • InitComplete
  • précharge
  • charge
  • événements de contrôle (par exemple ButtonClick)
  • LoadComplete
  • PreRender
  • SaveStateComplete
  • Render
  • Décharger
+0

Vous vouliez connaître l'événement et le contrôle à l'origine de la publication sans rien savoir des commandes. –

+2

@Tony vous pouvez creuser dans les valeurs de poste de formulaire ("EVENTTARGET", etc) mais c'est très fragile. Il vaudrait peut-être mieux décrire le problème que vous tentez de résoudre et obtenir une nouvelle perspective à ce sujet. –

+0

Je veux entrer dans l'instruction suivante dans le débogueur après l'accolade proche de page_load –

1

La "déclaration suivante" est indéterminée. En d'autres termes, dans le sens de «séparation des préoccupations», cela ne vous concerne pas. C'est la préoccupation d'ASP.NET, mais pas de contrôles individuels sur une page, ni de développeurs individuels déboguant une page.

Je vous recommande de déterminer la question à laquelle vous avez vraiment besoin d'une réponse et le problème que vous avez réellement résolu.


Voici un exemple de « pourquoi pas »: Considérez l'événement DataBinding, qui est déclenché lorsque la méthode Control.DataBind est appelée, souvent à l'intérieur de Page_Load. Considérez une page qui contient un contrôle DataGrid. Lorsque Control.DataBind est appelé, l'événement DataBinding est déclenché pour le contrôle, et Control.DataBind est ensuite appelé sur chaque contrôle dans Control.Controls, provoquant éventuellement l'augmentation de DataBinding pour ces contrôles. Lorsqu'il atteint le DataGrid, le contrôle remplit sa collection Controls avec une ligne pour chaque ligne dans les données d'entrée.

Chacun des contrôles ajoutés devra "rattraper". Ils passeront par les phases PreInit, Init, Load, etc. - tout jusqu'à DataBind.

Il n'y a pas moyen de savoir à l'avance qui contrôle seront ajoutés, de sorte que vous ne pouvez certainement pas déterminer quels événements seront tirés, et dans quel ordre. En fait, certains des événements de contrôle se déclencheront ou non en fonction de l'état précédent des contrôles. Un événement SelectedIndexChanged sur un contrôle déroulant dans une colonne de modèle de l'une des lignes peut tirer si l'index déroulant a changé depuis la dernière publication, mais pas si elle est restée la même!

+0

Je veux parcourir les différents événements même si leur séquence est indéterministe. Le moteur d'exécution doit savoir quel événement doit être exécuté une fois l'opération en cours. –

+0

@Tony si vous voulez parcourir les événements afin de comprendre quoi et quand les choses sont lancées, vous ne serez pas en mesure de traverser le débogueur sans le runtime ASP.Net .pdbs qui, à ma connaissance, ne sont pas disponibles . Cela signifie que la seule façon de comprendre cela serait d'ouvrir certaines classes en utilisant Reflector et de les regarder visuellement sans le débogueur. Maintenant, si c'est un besoin et non un désir, vous pouvez avoir d'autres problèmes et, comme d'autres l'ont dit, devrait probablement dire pourquoi vous avez besoin de participer à ces événements. – JamesEggers

+0

@Tony nous aimerions travailler avec vous sur le problème que vous essayez de résoudre. Ce que vous demandez est extrêmement difficile et exigerait beaucoup de travail pour vous faire avancer dans la mauvaise voie. Si nous pouvons parler du problème qui a déclenché cette série de questions, je parie que nous pouvons travailler avec vous pour trouver une autre solution qui demande beaucoup moins d'efforts et qui vous permettra d'aller beaucoup plus loin. –

Questions connexes