Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Page Unload ASP.Net
martedì 23 gennaio 2007 - 11.54
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
batti
Profilo
| Newbie
19
messaggi | Data Invio:
mar 23 gen 2007 - 11:54
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
191
messaggi | Data Invio:
mar 23 gen 2007 - 14:49
>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
1.574
messaggi | Data Invio:
mar 23 gen 2007 - 14:50
prova con la session_end nel global.asax.
C'è solo un capitano !!!!!!
batti
Profilo
| Newbie
19
messaggi | Data Invio:
mar 23 gen 2007 - 17:03
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
191
messaggi | Data Invio:
mar 23 gen 2007 - 19:12
>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
19
messaggi | Data Invio:
mer 24 gen 2007 - 09:08
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
191
messaggi | Data Invio:
mer 24 gen 2007 - 10:36
>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
19
messaggi | Data Invio:
gio 25 gen 2007 - 09:39
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
Torna su
Stanze Forum
Elenco Threads
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 !