asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 11179
ASPCode.it - Store

  > > Articoli

Trasferire il controllo ad un'altra pagina

Data di pubblicazione: 30/04/2002        Voto della community: 3,52 (Votanti: 7)


In questo articolo prenderò in esame i differenti metodi che ASP mette a disposizione per trasferire il controllo da una pagina ad un'altra. Analizzeremo i metodi Redirect dell'oggetto Response ed Execute e Transfer dell'oggetto Server.

Il Redirect

Quante volte aprendo una pagina web dopo aver digitato la relativa URL nella barra degli indirizzi siamo stati "spediti" a un’altra pagina dello stesso sito, o addirittura ad un nuovo dominio? In siti realizzati con ASP, il trasferimento dell’utente ad un'altra pagina può essere effettuato con il metodo Redirect() dell’oggetto Response. La sintassi è la seguente:

Response.Redirect(strURL)

dove strURL è un parametro stringa obbligatorio che specifica la pagina a cui deve essere trasferito il controllo. Esso può essere un percorso relativo:

<%
'richiama la pagina newpage.asp posta nella stessa directory della pagina richiamante
Response.Redirect("newpage.asp")

'richiama la pagina newpage.asp posta nella directory home che si trova
'ad un livello superiore rispetto alla directory della pagina richiamante
Response.Redirect("../home/newpage.asp")

'richiama la pagina newpage.asp posta nella root principale
Response.Redirect("/newpage.asp")

'richiama il documento predefinito (index.asp, index.html, default.htm, ecc.)
'posto nella directory home della root principale
Response.Redirect("/home/")
%>

oppure un percorso completo:

<%
'richiama il sito aspcode.it
Response.Redirect("http://www.aspcode.it")

'richiama la pagina forum.asp del sito aspcode.it
Response.Redirect("http://www.aspcode.it/forum/forum.asp")

'richiama il documento predefinito della directory articoli di aspcode.it
Response.Redirect("http://www.aspcode.it/articoli/")
%>

Il redirect si rivela utile in molte situazioni; per esempio, nel login di un utente sul vostro sito, nel caso di autenticazione fallita, potreste reindirizzare il browser a una pagina comune in cui viene segnalato il mancato riconoscimento dei dati inseriti. Molto utilizzato è anche il redirect nei forum a seguito dell’inserimento di un nuovo messaggio (anche se spesso il reindirizzamento viene fatto tramite JavaScript).

Il metodo Execute

Un altro modo per trasferire il controllo ad un’altra pagina asp è reso possibile dal metodo Execute dell’oggetto Server. La sintassi è la seguente:

Server.Execute(strURL)

dove strURL è un parametro stringa obbligatorio che specifica la pagina a cui deve essere trasferito il controllo; deve essere un percorso relativo.

A differenza del Redirect analizzato nel paragrafo precedente, il metodo Execute non redireziona il browser ad una nuova pagina, ma trasferisce il controllo su di essa, esegue il codice contenuto e infine restituisce il controllo e l’esecuzione alla pagina principale da cui era stato richiamato. Il metodo Execute non restituisce alcun valore, per cui, se vogliamo memorizzare eventuali parametri ottenuti all’interno del file richiamato, dobbiamo collocarli necessariamente in variabili di sessione o di applicazione.

Creiamo due semplici pagine di esempio. La prima, main.asp, richiamerà la seconda exec.asp e ne eseguirà il codice in essa contenuto tramite il metodo Execute. Ecco lo il sorgente di main.asp:

<html>
<head>
  <title>Server.Execute(strURL)</title>
</head>
<body>
<%
Response.Write("Pagina principale<br>")
Server.Execute("exec.asp")    'trasferisci il controllo alla pagina exec.asp
Response.Write("Ritorno alla pagina principale<br>")
%>
</body>
</html>

Ed ecco invece il semplicissimo file exec.asp:

<%
Response.Write("Pagina secondaria<br>")
%>

Eseguiamo la pagina principale main.asp; il risultato dovrebbe essere quello mostrato nella figura seguente:


Figura 1: Il metodo Execute.

Il metodo Transfer

L’ultima tecnica per trasferire il controllo ad un altro script asp è costituita dal metodo Transfer dell’oggetto Server. La sintassi è:

Server.Transfer(strURL)

dove strURL è un parametro stringa obbligatorio che specifica la pagina a cui deve essere trasferito il controllo; deve essere un percorso relativo.

A differenza del Redirect e di Execute, il metodo Trasfer trasferisce il controllo sulla nuova pagina, ma, una volta che essa è stata eseguita, il controllo non ritorna alla pagina principale. Un’importante proprietà di questo metodo, è che esso trasferisce alla nuova pagina i valori di ciascun oggetto incorporato della pagina principale, come ad esempio la querystring. Ecco un esempio simile al precedente che sfrutta questa nuova proprietà ed evidenzia la differenza rispetto al metodo Execute. Costruiamo la pagina principale main.asp come segue:

<html>
<head>
  <title>Server.Transfer(strURL)</title>
</head>
<body>
<%
Response.Write("Pagina principale<br>")
Server.Transfer("transfer.asp")    'trasferisci il controllo alla pagina transfer.asp
Response.Write("Ritorno alla pagina principale<br>")    'questa riga di codice non verrà eseguita
%>
</body>
</html>

Realizziamo ora la pagina transfer.asp:

<%
Dim qs
qs = Request.QueryString("par1")
Response.Write(qs)
%>

Caricando la pagina main.asp aggiungendo all’url la querystring ?par1=Paolo , dovreste ottenere il seguente output:


Figura 2: Il metodo Transfer.




Utenti connessi: 11179