Maison >développement back-end >Tutoriel C#.Net >Quel est l'ordre dans lequel les événements de page Asp.NET sont chargés ?

Quel est l'ordre dans lequel les événements de page Asp.NET sont chargés ?

巴扎黑
巴扎黑original
2017-08-06 09:38:371828parcourir

Cet article vous présente principalement la séquence de chargement des événements dans les pages Asp.NET. L'article le présente en détail à travers des images, des textes et des exemples de codes. Il a une certaine valeur de référence et d'apprentissage pour tous les amis qui en ont besoin. ci-dessous. Venez apprendre avec moi.

Cet article vous présente principalement le contenu pertinent sur la séquence de chargement des événements de page Asp.NET, et le partage pour votre référence et votre étude. Pas grand chose à dire ci-dessous, jetons un œil à l'introduction détaillée :

Événements dans les pages maîtres et les pages de contenu ASP.NET

Nous savons que les pages maîtres et les pages de contenu peuvent contenir des gestionnaires d'événements pour les contrôles. Pour les contrôles, les contrôles de la page de contenu déclenchent des événements dans la page de contenu et les contrôles de la page maître déclenchent des événements dans la page maître. Les événements de contrôle ne sont pas envoyés de la page de contenu à la page maître, et les événements des contrôles de la page maître ne peuvent pas être gérés dans la page de contenu, ils sont uniquement gérés dans leurs propres événements.

Voici la séquence des événements après la fusion de la page maître (Master) et de la page de contenu (ContentPage) :


Master页面控件 Init 事件。
ContentPage页面控件 Init 事件。
Master页  Init 事件。
ContentPage页 Init 事件。
ContentPage页 Load 事件。
Master页  Load 事件。
ContentPage页面控件 Load 事件。
ContentPage页面 PreRender 事件。
Master页面  PreRender 事件。
Master页面控件 PreRender 事件。
ContentPage页面控件 PreRender 事件。

L'ordre des événements dans les pages maîtres et les pages de contenu n'est pas important pour les développeurs de pages. Toutefois, si vous créez des gestionnaires d'événements qui dépendent de la disponibilité de certains événements, il est utile de comprendre l'ordre des événements dans la page maître et la page de contenu.

La séquence de chargement des événements de page dans Asp.Net

1 Lorsqu'une seule page est exécutée, les événements seront activés dans ce qui suit. order :


Page.PreInit
Page.Init
Page.InitComplite
Page.PreLoad
Page.Load
Page.LoadComplete
Page.PreRender
Page.PreRenderComplete

2. Si la page hérite d'une autre page, telle que BasePage:System.Web.UI.Page, ajoutez une fonction de vérification à BasePage, par exemple si vous êtes connecté. , si vous avez des autorisations, etc. Vérifiez, tandis que d'autres pages héritent de BasePage, la séquence d'activation d'événement de BasePage et de la page finale est :


BasePage.PreInit
Page.PreInit
BasePage.Init
Page.Init
BasePage.InitComplite
Page.InitComplite
BasePage.PreLoad
Page.PreLoad
BasePage.Load
Page.Load
BasePage.LoadComplete
Page.LoadComplete
BasePage.PreRender
Page.PreRender
BasePage.PreRenderComplete
Page.PreRenderComplete

3. Si MasterPage est utilisé, les événements dans MasterPage Et les événements dans ContentPage sont activés dans l'ordre suivant :


ContentPage.PreInit
Master.Init
ContentPage.Init
ContentPage.InitComplite
ContentPage.PreLoad
ContentPage.Load
Master.Load
ContentPage.LoadComplete
ContentPage.PreRender
Master.PreRender
ContentPage.PreRenderComplete

Il est à noter qu'il y a aucun événement PreInit dans Master.

4. Si ContentPage hérite de BasePage, alors l'ordre d'exécution de chaque événement deviendra :


BasePage.PreInit
ContentPage.PreInit
Master.Init
BasePage.Init
ContentPage.Init
BasePage.InitComplite
ContentPage.InitComplite
BasePage.PreLoad
ContentPage.PreLoad
BasePage.Load
ContentPage.Load
Master.Load
BasePage.LoadComplete
ContentPage.LoadComplete
BasePage.PreRender
ContentPage.PreRender
Master.PreRender
BasePage.PreRenderComplete
ContentPage.PreRenderComplete

N'oubliez pas : chargez d'abord la page héritée, puis chargez-vous vous-même. Si la page héritée a un héritage, chargez d'abord l'héritage de la page héritée.

Nom du gestionnaire d'événements Heure d'occurrence
Page_Init td > Charge le contrôle serveur dans l'état d'affichage du formulaire Web et l'initialise. Il s'agit de la première étape du cycle de vie du formulaire
Page_Load Charge le contrôle serveur sur l'objet Page. Étant donné que les informations sur l'état d'affichage sont disponibles à ce moment-là, vous pouvez utiliser du code ici pour modifier les paramètres de l'espace ou afficher du texte sur la page.
Page_PreRender L'application affichera la page
事件处理器名称 发生时间
Page_Init 在Web窗体的视图状态加载服务器控件并对其初始化。 这是窗体生命周期的第一步
Page_Load 在Page对象上载入服务器控件。由于此时视图状态信息是可以使用的,因此载这里可以用代码来改变空间的设置或者载页面上显示文本。
Page_PreRender 应用程序将要呈现Page

Page_Unload

页面从内存中卸载

Page_Error

发生未处理的异常

Page_AbortTransaction

事务处理被终止

Page_CommitTransaction

事务处理被接受

Page_DataBinding

把页面上的服务器空间和数据源绑定载一起

Page_Disposed

Page对象从内存中释放掉。这是Page对象生命周期中的最后一个事件

Page_Unload td>
Page déchargée de la mémoire
Page_Error une exception non gérée s'est produite
Page_AbortTransaction La transaction a été terminée
Page_CommitTransaction Transaction acceptée
Page_DataBinding Lier l'espace serveur et la source de données sur la page
Page_Disposed L'objet Page est libéré de la mémoire. Il s'agit du dernier événement du cycle de vie de l'objet Page

Séquence d'exécution des événements Init, Load, PreRender :

1) Evénement Init du contrôle

2) Evénement Init de la page où se trouve le contrôle

3) Charger l'événement de la page où se trouve le contrôle

4) Charger l'événement du contrôle

5) Evénement PreRender de la page où se trouve le champ

6) Evénement PreRender du contrôle

Quelques expériences issues de recherches personnelles : (Les deux points suivants peuvent être vérifié en créant une page créée par vous-même et en réécrivant les événements associés)

1. L'événement Init est déclenché du contrôle le plus interne (tel que le contrôle utilisateur) au contrôle le plus externe (page), et d'autres les événements tels que Load et PreRender sont transmis du contrôle le plus externe au contrôle le plus interne.

2. L'ordre d'exécution des mêmes événements entre les contrôles est de gauche à droite et de haut en bas selon la position du contrôle sur la page.

Remarque :

1. N'oubliez pas qu'un contrôle utilisateur est également considéré comme un contrôle sur la page

2. En considérant le contrôle utilisateur comme une page spéciale distincte, lui-même et les contrôles qu'il contient suivent également les mêmes règles.


3. Si l'événement onload de l'objet corps client est utilisé dans le programme client (tel que JavaScript), notez que cet événement client est exécuté en dernier, c'est-à-dire après tous les événements côté serveur. ont été exécutés. Exécutez simplement.


4. Il n'y a pas d'événements PreInit et OnComplete dans Master et les contrôles définis par l'utilisateur Master lui-même est un contrôle utilisateur, usercontrol hérite de TemplateControl et TemplateControl hérite de Control. . (capture d'écran partielle), vous pouvez également consulter ce document officiel : https://referencesource.microsoft.com/#System.Web/UI/Control.cs,87dbac93d9749fa2.



Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn