Page Unload ASP.Net

martedì 23 gennaio 2007 - 11.54

batti Profilo | Newbie

Ciao,
ho iniziato da poco ad utilizzare asp.net, ho trovato un problema banale ma che non riesco proprio a risolvere... ho necessità di mettere del codice alla chiusura di una pagina aspx, ho provato a metterlo nella page unload ma il problema è che il codice mi viene eseguito quando apro la pagina!! Come è possibile? Tutte le volte che la pagina viene ricaricata mi viene eseguito anche il codice che sta nella page unload... qualcuno ha qualche spiegazione?
In pratica sto cercando di realizzare una pagina che mi crei un ordine aggiungendo delle righe in un DB e quando faccio il logout o chiudo il browser con la 'X' devo poter cancellare le righe che ho inserito nel database. Mi potete dare un consiglio su come realizzare una cosa del genere.
Grazie.

nullatore Profilo | Junior Member

>Ciao,
>ho iniziato da poco ad utilizzare asp.net, ho trovato un problema
>banale ma che non riesco proprio a risolvere... ho necessità
>di mettere del codice alla chiusura di una pagina aspx, ho provato
>a metterlo nella page unload ma il problema è che il codice mi
>viene eseguito quando apro la pagina!! Come è possibile? Tutte
>le volte che la pagina viene ricaricata mi viene eseguito anche
>il codice che sta nella page unload... qualcuno ha qualche spiegazione?
>In pratica sto cercando di realizzare una pagina che mi crei
>un ordine aggiungendo delle righe in un DB e quando faccio il
>logout o chiudo il browser con la 'X' devo poter cancellare le
>righe che ho inserito nel database. Mi potete dare un consiglio
>su come realizzare una cosa del genere.
>Grazie.

[I guru del posto mi correggano se dico stupidagini!]

La risposta sta nel sapere come è composto il ciclo di vita di una pagina .aspx

Il client (il browser) fa una richiesta al server (IIS nel nostro caso);
il server crea l'oggetto pagina, lo inizializza, lo riempe, lo disegna, lo scarica dalla memoria, lo uccide e lo spara al tuo browser (ovviamente sto semplificando).

Mettendo del codice nel Page_Unload stai intervenendo durante lo scarico della pagina dalla memoria. E' dunque sì uno delle ultime fasi del ciclo di vita della pagina, ma ti trovi ancora lato server.. la pagina infatti verrà poi spedita al client che ne ha fatto richiesta e di li inizierà un nuovo ciclo di vita; stavolta lato client.
Ecco perchè a te sembrerà che quel codice sia stato eseguito all'inizio....






totti240282 Profilo | Guru

prova con la session_end nel global.asax.
C'è solo un capitano !!!!!!

batti Profilo | Newbie

Ciao ragazzi, grazie dell'interessamento, provo a spiegarvi meglio il mio problema: sto facendo un sito con un'area protetta, quando faccio il login accedo ad una pagina che mi consente di navigare in altre pagine protette, una di queste pagine mi permette di creare un ordine. Questo ordine viene creato inserendo delle righe in un Db, il problema è che se questo ordine non viene confermato, ma l'utente esce dalla pagina o addirittura chiude il browser io devo cancellare le righe inserite nel DB, a quanto mi avete detto non posso mettere il codice nell'unload perchè il ciclo di vita della pagina lato server esegue l'unload prima che il client visualizzi la pagina (giusto????), nella session end potrebbe essere una soluzione (grazie del suggerimento ) solo che il codice viene eseguito anche quando faccio il logout dalle altre pagine dell'area riservata. Chiedevo se c'era una soluzione che veniva eseguita sulla chiusura della pagina dell'ordine. E poi c'è un modo per cattuare la chiusura del browser ed eseguire prima che venga chiuso del codice?
Vi annuncio che sono alle prime armi e quindi avrei bisogno di più spiegazioni.

nullatore Profilo | Junior Member

>mi avete detto non posso mettere il codice nell'unload perchè
>il ciclo di vita della pagina lato server esegue l'unload prima
>che il client visualizzi la pagina (giusto????),

Fino a che qualcuno non smentisce prendilo per corretto
Cmq non credo proprio di sbagliarmi...

>nella session
>end potrebbe essere una soluzione (grazie del suggerimento )
>solo che il codice viene eseguito anche quando faccio il logout
>dalle altre pagine dell'area riservata. Chiedevo se c'era una
>soluzione che veniva eseguita sulla chiusura della pagina dell'ordine.

Beh tu nel SessionEnd metti che devi cancellare ogni ordine non comfermato, a prescindere dalla pagina che l'ha creato, NO?

>E poi c'è un modo per cattuare la chiusura del browser ed eseguire
>prima che venga chiuso del codice?

Credo di no.

batti Profilo | Newbie

Ok nullatore, prendo per corretto che il page unload non lo posso utilizzare (ma allora a cosa serve??) per cancellare i record di quell'ordine nella session end avrei bisogno del numero d'ordine o dell' IDCliente che fino ad ora avevo memorizzato in variabili session ! Devo dichiarare delle variabili globali? dove le dichiaro? Comunque se l'utente mi chiude il browser (il che succede il 90% delle volte) il DB mi rimane sporco giusto?
Ciao e grazie

nullatore Profilo | Junior Member

>Ok nullatore, prendo per corretto che il page unload non lo posso
>utilizzare (ma allora a cosa serve??)

Non l'ho mai usato, probabilmente serve per effettuare operazioni di pulizia e/o disconnessioni da DB prima che l'oggetto page sia eliminato. Ma di questo chiedo lumi a chi ha piu' "stellline" di me.
Cmq se guardi su l' MSDN ti spiega per bene il ciclo di vita di una pagina aspx.
Puoi iniziare da qui: http://msdn2.microsoft.com/it-it/library/ms178472(VS.80).aspx

>per cancellare i record
>di quell'ordine nella session end avrei bisogno del numero d'ordine
>o dell' IDCliente che fino ad ora avevo memorizzato in variabili
>session ! Devo dichiarare delle variabili globali? dove
>le dichiaro? Comunque se l'utente mi chiude il browser (il che
>succede il 90% delle volte) il DB mi rimane sporco giusto?
>Ciao e grazie

Nell session_end vedi la sessione prima che venga distrutta quindi puoi accedere a tutte le variabile legate all'utente che se ne sta andando....

batti Profilo | Newbie

Ok, uso le variabili session e la session end e per i record che rimangono nel db quando viene chiuso il browser farò una utility che li cancella.
Garzie e alla prossima
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5