Problematica Form e IsPostBack

Scusate la prima “intrusione” nella piattaforma .NET in maniera così stringata e sbrigativa, ma dovevo ricordare a me stesso e a tutti voi un piccolo problema che mi ha fatto perdere almeno un’oretta buona: la gestione del Page Load delle pagine ASP .NET.

L’evento Page_Load() viene eseguito ogni qualvolta la pagina viene richiesta dall’utente. Questo ovviamente crea un problema nel caso in cui abbiamo creato una pagina con un form da compilare e da salvare. In pratica, nella nostra pagina del dettaglio form, sicuramente prevederemo un qualche sistema di raccolta dati (ADO, LINQ, classe privata… quello che vi pare) per riempire i vari campi con le informazioni desiderate, e questo codice lo troveremo ovviamente nel Page_Load() della nostra pagina.

Ma cosa succede quando andiamo a cliccare su “Salva i dati”? Ovviamente, richiamando la stessa pagina, prima di eseguire il codice del nostro pulsante “salva”, la pagina eseguire il metodo Page_Load(), ricaricando quindi nei vari campi le informazioni precedenti, e poi procederà al salvataggio, senza quindi effettuare nessun tipo di aggiornamento.

Come ovviamo a questo problema? Semplice: utilizziamo il tipo bool isPostBack, così da verificare che il codice (racchiuso nel controllo con questo tipo) sarà eseguito una sola volta. Eccovi un esempio:

protected void Page_Load(object sender, EventArgs e)
if (!Page.IsPostBack) {
// Il codice inserito in questo ciclo sarà eseguito una sola volta.
// Nel nostro caso inserimento nel ciclo il caricamento dei vari campi dalla sorgente dati.
}

Spero che questa piccola spiegazione possa essere d’aiuto a tutti coloro che si imbatteranno in questa problematica. Alla prossima.

You can follow any responses to this entry through the RSS 2.0 feed.