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.
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:
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.
LINQ e la trappola della 'deferred execution'Una "trappola" in cui si può incappare utilizzando il risultato di... |
C#, le Custom Type ConversionConversioni personalizzate tra classi, creare metodi particolari per... |
Introduzione a Entity FrameworkIl framework ORM messo a disposizione da .NET |
Repeater: visualizzare un feed RSSUtilizzare il controllo XMLDataSource e sfruttare il metodo XPath()... |
Repeater, il server control "semplice"Cos'è e come funziona il controllo Repeater |
Guida ASP.NET MVC Best PracticesUn workflow dettagliato e ricco di suggerimenti pratici per... |
Guida ASP.NET Starter KitUn modo semplice per imparare ad utilizzare le tecnologie Microsoft... |
Guida Visual Studio 2010L'ambiente di sviluppo di riferimento per sviluppare applicazioni su... |
Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.
Iscriviti alla newsletter
|
|
Corso Progettazione database11 Maggio 2012 a Milano |
|
|
Amministratore di Reti Windows Server 200811 Giugno 2012 a Milano |
|
Nessun corso previsto |