22 messaggi dal 07 gennaio 2006
Forse non è neanche il titolo giusto per questo post…adesso cerco di spiegarvi. Questo qui sotto è il flusso delle informazioni che avrei intenzione di implementa (nulla di straordinario).

Pagina 1 con un modulo compilabile, sulla conferma del modulo effettuo una INSERT e stampo l’esito a video, poi tramite un link o un reindirizzamento automatico salto ad una terza pagina (il contenuto di questa è ininfluente).

Ecco lo schema:

http://img15.imageshack.us/img15/8201/flusso15cn.gif

Qual è il problema??

I problemi fondamentalmente sono 2:

1)se nella pagina di esito della INSERT, l’utente effettua un refresh della pagina ho un doppio inserimento :(

schema:
http://img15.imageshack.us/img15/7042/flusso20ql.gif


2)se nella terza pagina l’utente preme il tasto back del browser, ho sempre un doppio inserimento

schema:
http://img15.imageshack.us/img15/7043/flusso33zf.gif


Come potrei fare per evitare questo doppio inserimento???

Per il punto 2, pressione del tasto back, cosa bisogna fare per avere un risultato del genere

Link
http://img15.imageshack.us/img15/5712/pagescadut6xd.gif

Grazie mille a chiunque riuscira a rispondere :)
3.168 messaggi dal 06 settembre 2002
Contributi | Blog
Ciao,
la soluzione migliore è secondo me creare una chiave in base alla quale puoi identificare se un record è stato già inserito o meno.

HTH
.

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
22 messaggi dal 07 gennaio 2006
Lo so è una domanda stupida....ma puoi spiegarmi meglio cosa intendi ? :( sorry


per la faccenda della pagina scaduta....qualche dritta??

Modificato da Lambe il 16 gennaio 2006 10.08 -
3.168 messaggi dal 06 settembre 2002
Contributi | Blog
Ciao,

Intento dire, non hai una chiave che ti identifica univocamente il record che hai inserito? se si, prima di fare l'insert ti fai una select e blocchi il secondo inserimento in caso che il record esista già.

Per fa apparire l'avviso di pagina scaduta ti basta aggiungere questa riga: Response.Cache.SetCacheability(HttpCacheability.NoCache)
HTH
.

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
22 messaggi dal 07 gennaio 2006
Ok + o meno qualcosa mi sono inventato

all'interno di un campo hidden del form inserisco un numero random...quando vado a fare la inserto oppure una qualsiasi istruzione sql, salvo in una tabella temporanea

codice identificativo utente
nome form
numero random
hash sql

in questo modo se l'utente fa aggiorna e di dati vengo reinviati alla mia pagina, effettuerò prima un controllo su questa tabella per vedere poi nel caso continuerò o fermero l'esecuzione.

Stavo pensando al codice identificativo dell'utente e volevo utilizzare l'id delle sessione, in quanto mi sebrava che questo fosse diverso per ogni sessione del browser........giusto??

se però all'interno del load di una webform inserisco questo codice

protected void Page_Load(object sender, EventArgs e)
{
    Response.Write(Session.SessionID);
}


ad ogni refresh della pagina mi stampa un codice diverso?!?!?

è giusto cosi??
(cioè che l'ID sessione cambi ad ogni refresh della pagina)
22 messaggi dal 07 gennaio 2006
Lambe ha scritto:


se però all'interno del load di una webform inserisco questo codice

protected void Page_Load(object sender, EventArgs e)
{
    Response.Write(Session.SessionID);
}


ad ogni refresh della pagina mi stampa un codice diverso?!?!?

è giusto cosi??
(cioè che l'ID sessione cambi ad ogni refresh della pagina)


Ho capito il perché.... lo scrivo qui magari può servire a qualcuno.

Se all'interno del nostro progetto non è presente un Global Application Class (il solito Global.asax) ad ogni refresh della pagina il l'istruzione

Response.Write(Session.SessionID);


stampa a video un codice diverso ogni volta.
Mentre se è presente, ad ogni refresh, viene stampato sempre lo stesso SessionID.

lmb
Lambe wrote:

Mentre se è presente, ad ogni refresh, viene stampato sempre lo stesso SessionID.

no, il motivo è che se non scrivi prima qualcosa nella Session, il SessionID non viene fissato ma cambia ogni volta, vedi:
http://forum.aspitalia.com/forum/post/248399/REWebFormSessionRequestCookiesH elp.aspx#249328

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
22 messaggi dal 07 gennaio 2006
Quindi l'inserimento del global.asax all'interno del progetto , provoca una scrittura di qualcosa all'interno del Session, allora!?!?
(non vuole essere ne una provocazione, ne una domanda per fare dell'umorismo....è solo per riuscire a capire meglio )

il file global.asax non l'ho neanche toccato.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.