ASP.Net  »  Guide  »  Guida ASP.NET 2.0 

Il concetto di postback



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.

Ultimi articoli ASP.Net

LINQ e la trappola della 'deferred execution'

Una "trappola" in cui si può incappare utilizzando il risultato di...

C#, le Custom Type Conversion

Conversioni personalizzate tra classi, creare metodi particolari per...

Introduzione a Entity Framework

Il framework ORM messo a disposizione da .NET

Repeater: visualizzare un feed RSS

Utilizzare il controllo XMLDataSource e sfruttare il metodo XPath()...

Repeater, il server control "semplice"

Cos'è e come funziona il controllo Repeater

Altri articoli

Guide ASP.Net

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Guida Visual Studio 2010

L'ambiente di sviluppo di riferimento per sviluppare applicazioni su...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto