Condividi tramite


Reindirizzamento degli utenti a un'altra pagina

Aggiornamento: novembre 2007

Spesso potrebbe essere necessario reindirizzare gli utenti ad altre pagine nell'ambito della propria applicazione Web. In ASP.NET sono disponibili i seguenti metodi per impostare il reindirizzamento all'interno delle pagine Web:

  • Utilizzando collegamenti ipertestuali nelle pagine.

  • Configurando il cross-page posting, che consente di specificare una pagina di destinazione alternativa quando la pagina corrente viene inviata.

  • Eseguendo il reindirizzamento a livello di codice imponendo la richiesta di una diversa pagina nel browser.

  • Eseguendo il reindirizzamento a livello di codice tramite trasferimento del controllo a una diversa pagina nella stessa applicazione Web.

Queste opzioni verranno esaminate di seguito. Una tabella alla fine dell'argomento offre un riepilogo delle opzioni nonché indicazioni utili per decidere quando utilizzare ciascuna di esse.

Collegamenti ipertestuali

È possibile utilizzare un tag di ancoraggio HTML (<a>) in una pagina Web ASP.NET per creare collegamenti statici oppure controllare a livello di codice il testo del collegamento e l'URL di destinazione dei collegamenti ipertestuali utilizzando il controllo HyperLink. In questo scenario, l'utente sceglie esplicitamente un collegamento e il browser effettua il trasferimento alla pagina di destinazione. La pagina di destinazione viene richiamata utilizzando un comando HTTP GET. Di conseguenza, nessuna informazione relativa alla pagina di origine viene trasmessa alla pagina di destinazione, a meno che nell'URL della pagina di destinazione non venga specificata una stringa di query. Se le pagine di origine e di destinazione appartengono alla stessa applicazione Web, possono condividere informazioni tramite lo stato applicazione o sessione.

Cross-page posting

Per impostazione predefinita, i pulsanti in una pagina Web ASP.NET inviano la pagina a se stessa. Il cross-page posting consente di configurare un pulsante in una pagina Web ASP.NET per inviare la pagina corrente a un'altra. Un esempio tipico è la creazione di un form a più pagine. È possibile configurare i pulsanti nella pagina in modo da spostarsi alla pagina successiva e precedente del form.

Il cross-page posting è simile ai collegamenti ipertestuali per il fatto che il trasferimento viene avviato da un'azione dell'utente. Tuttavia, nel cross-page posting, la pagina di destinazione viene richiamata utilizzando un comando HTTP POST, che invia i valori dei controlli sulla pagina di origine alla pagina di destinazione. Inoltre, se le pagine di origine e di destinazione appartengono alla stessa applicazione Web, la pagina di destinazione può accedere alle proprietà pubbliche della pagina di origine. Come sempre, tutte le pagine nell'applicazione possono condividere le informazioni memorizzate nello stato sessione o applicazione.

Per ulteriori informazioni, vedere Cross-page posting nelle pagine Web ASP.NET e Procedura: inviare pagine Web ASP.NET a una pagina diversa.

Reindirizzamento a livello di codice utilizzando il browser

È possibile reindirizzare gli utenti a un'altra pagina utilizzando le funzionalità del browser. In un reindirizzamento del browser il browser trasmette una nuova richiesta al server di destinazione sotto forma di richiesta GET HTTP.

È possibile attivare il reindirizzamento a livello di codice nello script client o nel codice server. Nello script client è possibile chiamare il metodo form.submit, a condizione che il valore dell'attributo method dell'elemento <form> sia get. In questo caso, se la pagina corrente contiene dati del form, viene passata al server di destinazione aggiungendola come stringa di query all'URL richiesto.

Nel codice server è possibile eseguire il reindirizzamento a livello di codice chiamando il metodo Redirect. Il metodo invia un comando al browser dell'utente perché quest'ultimo esegua un comando GET HTTP per la pagina di destinazione. La chiamata al metodo Redirect del server è l'equivalente a livello di codice del clic su un collegamento ipertestuale, nel senso che determina una nuova richiesta per la pagina di destinazione. Poiché si stanno chiamando i metodi dal proprio codice, è possibile definire in modo dinamico l'URL di destinazione, incluse eventuali informazioni sulla stringa di query. Se le pagine di origine e di destinazione appartengono alla stessa applicazione Web, è possibile condividere i dati tra le pagine di origine e di destinazione aggiungendo codice server per memorizzare tali dati nello stato sessione.

Nota:

Fino alla versione 6.0 di Internet Explorer è possibile elaborare solo un massimo di 2.048 caratteri nell'URL, inclusi i dati della stringa di query. Se l'URL supera i 2.048 caratteri, può verificarsi un errore oppure i dati nella stringa di query potrebbero essere troncati o non inviati con la richiesta. Nelle pagine Web ASP.NET una richiesta GET che include dati inviati può superare il limite di 2.048 caratteri se le informazioni dello stato di visualizzazione (memorizzate in un campo nascosto) sono parte della richiesta e ciò può causare errori. Altri browser potrebbero non presentare questa limitazione. Per ulteriori informazioni, vedere l'articolo 208247 "Maximum URL Length Is 2,083 Characters in Internet Explorer" disponibile nella Microsoft Knowledge Base all'indirizzo https://support.microsoft.com (informazioni in lingua inglese). Per ovviare a questa limitazione quando si sta tentando di condividere informazioni tra pagine, è possibile reindirizzare gli utenti utilizzando richieste POST HTTP, come illustrato in questo argomento. Se l'applicazione genera una richiesta GET HTTP, è possibile memorizzare le informazioni in modo alternativo, senza utilizzare una stringa di query, ad esempio nello stato sessione.

Reindirizzamento a livello di codice sul server

È inoltre possibile eseguire il reindirizzamento a livello di codice verso una pagina di destinazione sul server chiamando il metodo Transfer. In questo caso, il server trasferisce semplicemente la pagina di origine corrente alla pagina di destinazione. Viene quindi eseguito il rendering della pagina di destinazione anziché della pagina di origine. Le pagine di origine e di destinazione si devono trovare nella stessa applicazione Web. Come per il cross-page posting, il metodo Transfer ha il vantaggio di consentire alla pagina di destinazione la lettura dei valori dei controlli e delle proprietà pubbliche dalla pagina di origine.

Poiché il trasferimento tra pagine di origine e destinazione si verifica sul server, il browser non dispone di informazioni sulla pagina modificata e conserva le informazioni sull'URL originale (di origine). Ad esempio, la casella Indirizzo di Internet Explorer non viene modificata dopo un trasferimento, ma continua a mostrare l'URL dell'ultima pagina richiesta, in genere la pagina di origine. La cronologia del browser non viene aggiornata per riflettere il trasferimento. Questo può determinare un funzionamento imprevisto se l'utente aggiorna la pagina nel browser o fa clic sul pulsante Indietro del browser. Di conseguenza, la chiamata del metodo Transfer è una strategia particolarmente adatta alle applicazioni in cui all'utente vengono presentate pagine con l'URL nascosto.

Selezione di un'opzione di reindirizzamento

Nella seguente tabella sono illustrati i modi possibili per eseguire il reindirizzamento tra le pagine.

Strategia

Caratteristica

Utilizzo

Collegamenti ipertestuali

  • Esegue una nuova richiesta nella pagina di destinazione.

  • Non passa le informazioni della pagina corrente alla pagina di destinazione.

  • Richiede l'inizializzazione da parte dell'utente.

  • Esegue il reindirizzamento a qualsiasi pagina, non solo a quelle nella stessa applicazione Web.

  • Consente di condividere informazioni tra le pagine utilizzando una stringa di query o lo stato sessione. Il controllo HyperLink consente di creare stringhe di query e URL a livello di codice.

  • Per lo spostamento che non richiede ulteriore elaborazione, come nei menu o elenchi di collegamenti.

  • Quando lo spostamento deve essere eseguito sotto il controllo dell'utente.

Cross-page posting

  • Invia informazioni sulla pagina corrente alla pagina di destinazione.

  • Rende disponibili le informazioni sull'invio nella pagina di destinazione.

  • Richiede l'inizializzazione da parte dell'utente.

  • Esegue il reindirizzamento a qualsiasi pagina, non solo a quelle nella stessa applicazione Web.

  • Consente alla pagina di destinazione di leggere le proprietà pubbliche della pagina di origine quando tali pagine si trovano nella stessa applicazione Web.

  • Per passare le informazioni della pagina corrente alla pagina di destinazione (come nei form a più pagine).

  • Quando lo spostamento deve essere eseguito sotto il controllo dell'utente.

Reindirizzamento del browser

  • Esegue una nuova richiesta GET HTTP nella pagina di destinazione.

  • Passa la stringa di query, se disponibile, alla pagina di destinazione. In Internet Explorer la dimensione della stringa di query è limitata a 2.048 caratteri.

  • Fornisce controllo dinamico e a livello di codice sull'URL di destinazione e sulla stringa di query.

  • Consente di eseguire il reindirizzamento a qualsiasi pagina, non solo a quelle nella stessa applicazione Web.

  • Consente di condividere informazioni tra le pagine di origine e le pagine di destinazione utilizzando lo stato sessione.

  • Per lo spostamento condizionale, quando si desidera controllare l'URL di destinazione e quando avviene lo spostamento. Utilizzare, ad esempio, questa opzione se l'applicazione deve determinare a quale pagina passare in base ai dati forniti dall'utente.

Trasferimento server

  • Trasferisce il controllo a una nuova pagina che viene visualizzata al posto di quella di origine.

  • Reindirizza solo alle pagine di destinazione che si trovano nella stessa applicazione Web della pagina di origine.

  • Consente di leggere valori e proprietà pubbliche dalla pagina di origine.

  • Non aggiorna le informazioni del browser con quelle relative alla pagina di destinazione. Premendo i pulsanti Aggiorna o Indietro nel browser si può determinare un funzionamento imprevisto.

  • Per lo spostamento condizionale, se si desidera controllare quando avviene lo spostamento e accedere al contesto della pagina di origine.

  • Particolarmente adatta in situazioni in cui l'URL non è visibile all'utente.

Vedere anche

Attività

Procedura: passare valori tra pagine Web ASP.NET

Procedura: inviare pagine Web ASP.NET a una pagina diversa

Procedura: determinare come sono state richiamate le pagine Web ASP.NET

Concetti

Cenni preliminari sulla gestione dello stato ASP.NET