ASP.NET
Ciclo di vita della pagina
Ricerca…
Eventi del ciclo di vita
Di seguito sono riportati gli eventi del ciclo di vita della pagina:
PreInit - PreInit è il primo evento nel ciclo di vita della pagina. Controlla la proprietà IsPostBack e determina se la pagina è un postback. Imposta i temi e le pagine master, crea controlli dinamici e ottiene e imposta i valori delle proprietà del profilo. Questo evento può essere gestito sovrascrivendo il metodo OnPreInit o creando un gestore Page_PreInit.
Init - Init evento inizializza la proprietà di controllo e la struttura di controllo viene creata. Questo evento può essere gestito sovrascrivendo il metodo OnInit o creando un gestore di Page_Init.
InitComplete : l'evento InitComplete consente il tracciamento dello stato di visualizzazione. Tutti i controlli attivano il monitoraggio dello stato di visualizzazione.
LoadViewState - L'evento LoadViewState consente di caricare le informazioni sullo stato di visualizzazione nei controlli.
LoadPostData : durante questa fase, i contenuti di tutti i campi di input vengono definiti con il tag elaborato.
PreLoad - PreLoad si verifica prima che i dati postback siano caricati nei controlli. Questo evento può essere gestito sovrascrivendo il metodo OnPreLoad o creando un gestore di Page_PreLoad.
Carica : l'evento Load viene generato prima per la pagina e successivamente in modo ricorsivo per tutti i controlli figlio. I controlli nell'albero di controllo sono creati. Questo evento può essere gestito sovrascrivendo il metodo OnLoad o creando un gestore di Page_Load.
LoadComplete : il processo di caricamento è completato, i gestori di eventi di controllo vengono eseguiti e viene eseguita la convalida della pagina. Questo evento può essere gestito sovrascrivendo il metodo OnLoadComplete o creando un gestore di Page_LoadComplete
PreRender : l'evento PreRender si verifica immediatamente prima del rendering dell'output. Gestendo questo evento, pagine e controlli possono eseguire qualsiasi aggiornamento prima che l'output sia reso.
PreRenderComplete - Poiché l'evento PreRender viene generato in modo ricorsivo per tutti i controlli figlio, questo evento garantisce il completamento della fase di pre-rendering.
SaveStateComplete : lo stato del controllo sulla pagina viene salvato. Personalizzazione, stato di controllo e visualizzazione delle informazioni sullo stato vengono salvate. Il codice HTML è generato. Questo stage può essere gestito sovrascrivendo il metodo Render o creando un gestore Page_Render.
UnLoad - La fase di UnLoad è l'ultima fase del ciclo di vita della pagina. Solleva l'evento UnLoad per tutti i controlli in modo ricorsivo e infine per la pagina stessa. La pulizia finale viene eseguita e tutte le risorse e i riferimenti, ad esempio le connessioni al database, vengono liberati. Questo evento può essere gestito sovrascrivendo il metodo OnUnLoad o creando un gestore di Page_UnLoad.
Esempio di codice
using System;
namespace myProject
{
public partial class WebForm1 : System.Web.UI.Page
{
public string PageSteps = string.Empty;
//Raised after the start stage is complete and before the initialization stage begins.
protected void Page_PreInit(object sender, EventArgs e)
{
PageSteps += "1 - Page_PreInit<br>";
//Access to page Controls not available in this step
//Label1.Text = "Step 1";
}
//Raised after all controls have been initialized and any skin settings have been applied.
//The Init event of individual controls occurs before the Init event of the page.
protected void Page_Init(object sender, EventArgs e)
{
PageSteps += "2 - Page_Init<br>";
Label1.Text = "Step 2";
}
//Raised at the end of the page's initialization stage.
//Only one operation takes place between the Init and InitComplete events: tracking of view state changes is turned on.
//View state tracking enables controls to persist any values that are programmatically added to the ViewState collection.
//Until view state tracking is turned on, any values added to view state are lost across postbacks.
//Controls typically turn on view state tracking immediately after they raise their Init event.
protected void Page_InitComplete(object sender, EventArgs e)
{
PageSteps += "3 - Page_InitComplete<br>";
Label1.Text = "Step 3";
}
//Raised after the page loads view state for itself and all controls, and after it processes postback data that is included with the Request instance.
protected override void OnPreLoad(EventArgs e)
{
PageSteps += "4 - OnPreLoad<br>";
Label1.Text = "Step 4";
}
//The Page object calls the OnLoad method on the Page object, and then recursively does the same for each child control until the page and all controls are loaded.
//The Load event of individual controls occurs after the Load event of the page.
protected void Page_Load(object sender, EventArgs e)
{
PageSteps += "5 - Page_Load<br>";
Label1.Text = "Step 5";
}
//Use these events to handle specific control events, such as a Button control's Click event or a TextBox control's TextChanged event.
protected void btnSubmit_Click(object sender, EventArgs e)
{
//Step only visible on PostBack
PageSteps += "6 - btnSubmit_Click<br>";
Label1.Text = "Step 6";
}
//Raised at the end of the event-handling stage.
protected void Page_LoadComplete(object sender, EventArgs e)
{
PageSteps += "7 - Page_LoadComplete<br>";
Label1.Text = "Step 7";
}
//Raised after the Page object has created all controls that are required in order to render the page, including child controls of composite controls.
//(To do this, the Page object calls EnsureChildControls for each control and for the page.)
protected override void OnPreRender(EventArgs e)
{
PageSteps += "8 - OnPreRender<br>";
Label1.Text = "Step 8";
}
//Raised after each data bound control whose DataSourceID property is set calls its DataBind method.
protected override void OnPreRenderComplete(EventArgs e)
{
PageSteps += "9 - OnPreRenderComplete<br>";
Label1.Text = "Step 9";
}
//Raised after view state and control state have been saved for the page and for all controls.
//Any changes to the page or controls at this point affect rendering, but the changes will not be retrieved on the next postback.
protected override void OnSaveStateComplete(EventArgs e)
{
PageSteps += "10 - OnSaveStateComplete<br><hr><br>";
Label1.Text = "Step 10";
}
// Render
//This is not an event; instead, at this stage of processing, the Page object calls this method on each control.
//All ASP.NET Web server controls have a Render method that writes out the control's markup to send to the browser.
//Raised for each control and then for the page.
//Controls use this event to do final cleanup for specific controls, such as closing control-specific database connections
protected void Page_UnLoad(object sender, EventArgs e)
{
//This last PageSteps addition will not be visible on the page
PageSteps += "11 - Page_UnLoad<br>";
//Access to page Controls not available in this step
//Label1.Text = "Step 11";
}
}
}
Aggiungi il seguente codice alla pagina .aspx per visualizzare i passaggi nel ciclo di vita.
<b>Page Life Cycle Visualization:</b>
<br />
<%= PageSteps %>
Maggiori informazioni
- https://msdn.microsoft.com/en-us/library/ms178472.aspx
- https://www.tutorialspoint.com/asp.net/asp.net_life_cycle.htm
- http://www.c-sharpcorner.com/UploadFile/8911c4/page-life-cycle-with-examples-in-Asp-Net/
- https://www.codeproject.com/Articles/667308/ASP-NET-Page-Life-Cycle-Events