Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Il concetto di postback

Sapere cos'è il postback e quale meccanismo cela per usarlo con cognizione di causa
Sapere cos'è il postback e quale meccanismo cela per usarlo con cognizione di causa
Link copiato negli appunti

Prima dell'arrivo di ASP.NET, era usuale l'elaborazione degli input degli utenti, mediante 2 pagine. La prima pagina, era statica e conteneva un tag <form> che inviava (tramite l'attributo action) una serie di campi ad seconda pagina, dinamica, la quale si occupava di elaborare i valori inviati.

Una seconda tecnica era quella di avere il form in una pagina dinamica che inviava informazioni a se stessa. Nel form venivano usati dei campi nascosti (hidden) per passare alcune informazioni relative allo stato della pagina. Grazie a questo meccanismo si poteva capire se la pagina fosse stata richiesta per la prima volta o se avesse effettuato un post su se stessa, per poi agire di conseguenza. Questa tecnica è chiamata post back.

Il post back è implementato in ASP.NET in modo invisibile al programmatore attraverso il controllo server etichettato <form runat="server">.

Listato 1. Dichiarazione di un controllo form

<form runat="server">
.... vari controlli ...
</form>

Questo equivale pressappoco a

Listato 2. Esempio di post back prima di ASP.NET

<form method=post action="nostra_pagina.aspx" runat="server">
.... vari controlli ...

<input type="hidden" name="isPostBack" value="true">
</form>

Il form server side è indispensabile per gestire i controlli server (dall'area di testo alla GridView)
si può omettere solo se non si prevede una interazione con la pagina.

L'attributo method predefinito è post e non get come in HTML, ed i valori sono disponibili ogni volta nella collezione Request.Form come in ASP.

Con la stessa tecnica viene mantenuto lo stato di alcuni controlli grazie alla variabile ViewState. Il ViewState è una variabile stringa, il cui valore, come si può notare nell'esempio, è codificato e serve per ricostruire lo stato della pagina, in quanto le comunicazioni HTTP client-server sono prive di stato.

Se leggiamo il sorgente di una pagina generata da un web form, notiamo la presenza del ViewState:

Listato 3. Generazione del ViewState

...
<body>
<form name="ctl00" method="post" action="orizzontale_b.aspx" id="ctl00">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTc0MDEwNTM2MWRkrh4HGxooxoD8swfeDRec5C+Aedw=" />
</div>
...

La postback architecture ci da la possibilità di realizzare pagine HTML contenenti controlli con cui l'utente può interagire. I controlli scatenano eventi ed è compito dello sviluppatore realizzare gli opportuni gestori di eventi per gestire l'interazione.

Quando effettuiamo la richiesta di una web form, vengono sollevati gli eventi:

  1. Page_Init generato quando la pagina viene inizializzata
  2. Page_Load generato quando la pagina viene caricata
  3. Control Event generato se un comando (ad esempio un pulsante) ha inviato la pagina al server
  4. Page_Unload generato quando la pagina viene scaricata dalla memoria

La differenza tra il Page_Init ed il Page_Load è che nel Page_Init il ViewState non è stato ancora caricato, per cui i comandi mantengono i valori predefiniti anziché i valori impostati durante il postback.

Per gestire l'evento Page_Load, si ricorre di frequente alla proprietà IsPostBack della classe Page. Se IsPostBack è vera, ci troviamo in un contesto di postback, vale a dire che la pagina è stata caricata una prima volta ed è stata poi inviata al server in seguito al verificarsi di un evento sul client. Se IsPostBack è falsa, la pagina è stata caricata per la prima volta.

Ti consigliamo anche