2011-03-13 22 views
5

Mi stavo chiedendo come posso trovare l'url precedentemente visitato per una sessione?Reindirizza all'url precedente?

Quindi, dopo che un utente fa qualcosa, posso reindirizzare a quell'URL.

Esiste un modo standard per farlo? Altrimenti stavo per aggiungere alcune sostituzioni a Global.asax e utilizzare una variabile di sessione per archiviare la cronologia degli URL.

risposta

5

Request.UrlReferrer potrebbe essere ciò che si vuole, ma si potrebbe desiderare di pensare di utilizzare AJAX o passando l'URL come un parametro ...

1

La risposta di cui sopra è del tutto corretto, anche se in alcuni casi non è possibile passare l'URL lungo la stringa di query, ad esempio quando l'URL è mascherato. In questo caso il modo giusto è Request.UrlReferrer. Il problema con l'utilizzo di una variabile di sessione è che potrebbe scadere e causare un comportamento inaffidabile. O se hai più di una sessione server attivi o con mirroring, non funzionerà affatto.

In generale è una cattiva idea usare le variabili di sessione in MVC quando può essere evitato. La soluzione che ho seguito è stata l'utilizzo di JavaScript per ottenere l'URL precedente e passarlo nel modello di visualizzazione.

+0

Questo non funzionerà se l'utente ha javascript disabilitato. La codifica dell'URL ha più senso. – ashes999

+1

Oh dovrei aggiungere che l'intero sito è dipendente da JavaScript nel mio caso e non permetterà all'utente di visualizzare questa pagina senza JS abilitato heh – whoblitz