Impostare pagina scaduta su tasto back del browser.

lunedì 28 giugno 2010 - 11.59

kduhcm Profilo | Junior Member

Ciao Ragazzi,
sto realizzando un sito che permette di inserire ordini. Quando inserisco un ordine con un bottone, mi torna alla home page, ma se l'utente clicca su back e mi ritorna alla pagina precedente, e mi clicca nuovamente sul bottone, mi re-inserisce un altro ordine. L'ideale sarebbe che se clicca su back, comparisse l'avviso 'pagina scaduta...' come vedo che succede su alcuni siti, ma non ho idea di come realizzare la cosa... Consigli?
-----------------------------------------------------------------------------------------------------------------------
Sviluppo siti web Roma http://www.actasoftware.com

Gluck74 Profilo | Guru

ha ha ha, cercando su internet sembra che la maggior parte dei forumisti abbia il problema contrario, ovvero cliccando sul pulsante back del browser, appare la famosa schermata "pagina scaduta".
C'è chi si sta arroventando le meningi per far funzionare il tasto back e tu lo vuoi bloccare...... ha ha ha ha

La soluzione sta nell'inserire un parametro in POST quando entri nella pagina di inserimento ordine. Ovvero dalla home ipotizzo ci sia un link che ti porta alla pagina di inserimento ordine. Questo link dovrebbe diventare un linkbutton in modo da effettuare il postback.
Quindi sulla pagina degli ordini controlli il postback e agisci di conseguenza.
Quando l'utente invece preme sul pulsante back del browser, non dovrebbe poter accedere alla pagina.


altra soluzione è agire con la cache, ma in questo momento non mi ricordo bene come funziona, ma potresti impostare la scadenza immediata della pagina appena hai registrato l'ordine, in modo che un eventuale altro accesso, non sia possibile.


____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

kduhcm Profilo | Junior Member

Ciao
Non ho capito bene... Intendi dire che dovrei controllarmi l'url di provenienza sulla pagina e agire di conseguenza? Ma quando faccio back non mi va nel code-behind relativo a page load, quindi non saprei come gestirlo cosi... Cosa intendi dire quando dici aggiungere un parametro al post?
-----------------------------------------------------------------------------------------------------------------------
Sviluppo siti web Roma http://www.actasoftware.com

Gluck74 Profilo | Guru

>Ciao
>Non ho capito bene... Intendi dire che dovrei controllarmi l'url
>di provenienza sulla pagina e agire di conseguenza? Ma quando
>faccio back non mi va nel code-behind relativo a page load, quindi
>non saprei come gestirlo cosi... Cosa intendi dire quando dici
>aggiungere un parametro al post?
>-----------------------------------------------------------------------------------------------------------------------
>Sviluppo siti web Roma http://www.actasoftware.com


no no, non intendo controllare l'url.
esempio: avrai un pulsante, una voce di menu, qulcosa che ti fa andare alla pagina degli ordini. penso che sia un semplice link.
Dico di trasformare questo semplice link in un linkbutton, magari aggiungendo un campo nascoso con un valore tipo codice.
Ti servirà un server.transfer incede di un redirect, ma in questa maniera, nel load della pagina potrai controllare la presenza di questo campo codice.
Quando invece si preme il back dal browser, la pagina viene richamata senza postback, quindi questo codice non ci sarà.

Spero di essere stato più chiaro.


____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

kduhcm Profilo | Junior Member

Scusa ma non ti seguo. Quando premo back, non viene eseguito il code behind perche' lavora sulla cache. Come faccio a controllarmi questo codice quando l'utente preme back se non viene eseguito il code behind?
-----------------------------------------------------------------------------------------------------------------------
Sviluppo siti web Roma http://www.actasoftware.com

Gluck74 Profilo | Guru

ops......
non avevo capito....
Di solito sono abituato a lavorare con le impostazioni del browser che non utilizza la cache!!!!!

Be, allora puoi forzare tu il browser a non utilizzare la cache su questa chiamata.
Sulla pagina aspx:
<meta http-equiv="Expires" CONTENT="0"> <meta http-equiv="Cache-Control" CONTENT="no-cache"> <meta http-equiv="Pragma" CONTENT="no-cache">

sulla parte cs:
Response.Cache.SetCacheability(HttpCacheability.NoCache);

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

kduhcm Profilo | Junior Member

Funziona! Grazie :-)
-----------------------------------------------------------------------------------------------------------------------
Sviluppo siti web Roma http://www.actasoftware.com

nicola83 Profilo | Newbie

Ciao, scusate se riprendo un tuo commento di circa 4 anni fa, mi sono imbattuto nello stesso problema, ma a me non funziona.
Sono nuovissimo di asp.net e c#,quindi perdonatemi se la mia comprensione non sara' ottimale
Vi illustro il problema:
In un applicazione asp.net con vs, ho creato un user control che permette il Logout dalla pagina.
Il problema e' che dopo il logout,quando clicca il tasto dietro del browser, ritorna nella pagina dov'era precedente al logout(pagina.aspx). Vorrei che invece andasse alla pagina di login.
Ho inserito i 3 tag meta rispettivamente nella pagina.aspx e la parte da inserire nel code-behind in pagina.aspx.cs, ma niente.
Dove sbaglio?
Grazie a tutti per l'eventuale aiuto
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