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 |
|
|
Cross-page posting |
|
|
Reindirizzamento del browser |
|
|
Trasferimento server |
|
|
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