2012-02-13 10 views
17

ho confusione con quale è migliore o effetto per richiesta di pagina chiamante (prima pagina) e pagina chiamante (nuova pagina) ...Server.Transfer() vs. Server.Execute()

ho notato che In entrambi i casi, l'URL nel browser rimane l'URL della prima pagina (non si aggiorna all'URL della nuova pagina) poiché al browser non viene richiesto di farlo.

commenti apprezzabili ....

+0

http://stackoverflow.com/questions/521527/response-redirect-vs-server-transfer –

+0

@Thit - Response.Redirect è un'altra cosa – StuartLC

+0

@ThitLwinOo, chiede circa 'server.Transfer vs Server.Execute' , non su 'Response.Redirect vs. Server.Transfer'. –

risposta

20

Orignal a: Difference between Server.Transfer and Server.Execute

Sia Server.Transfer e Server.Execute sono state introdotte in Classic ASP 3.0 (e continuano a lavorare in ASP.NET).

Quando si utilizza Server.Execute, viene passato un URL come parametro e il controllo si sposta su questa nuova pagina. L'esecuzione del codice avviene sulla nuova pagina. Una volta che l'esecuzione del codice finisce, il controllo ritorna alla pagina iniziale, subito dopo la sua chiamata. Tuttavia, nel caso di Server.Transfer, funziona molto allo stesso modo, con la differenza che l'esecuzione si interrompe nella nuova pagina stessa (il controllo non viene restituito alla pagina chiamante).

In entrambi i casi, l'URL nel browser rimane l'url della prima pagina (non si aggiorna all'URL della nuova pagina) poiché il browser non è invitato a farlo.

2

So che questo è vecchio ma è venuto fuori come il primo o il secondo colpo quando ho cercato su google. Ho fatto alcuni test e volevo pubblicare i risultati.

Ho creato un sito Web con 2 pagine. Carico pagina dal 1 ° pagina conteneva il codice ..

try { 
    //Response.Redirect("~/WebForm2.aspx"); 
    //Server.Transfer("~/WebForm2.aspx"); 
    //Server.Execute("~/WebForm2.aspx"); 
    //Server.TransferRequest("~/WebForm2.aspx"); 

    string strTry = "Try"; 
} catch (Exception) { 
    string strCatch = "Catch"; 
} finally { 
    string strFinally = "Finally"; 
} 

La sequenza di quello che ha fatto per ognuno è quello che è stato davvero interessante ...

 
Command   Sequence    
Redirect   Call, Catch (ThreadAbortException), Finally, Load Page 2 
Transfer   Call, Load Page 2, Catch (ThreadAbortException), Finally 
Execute   Call, Load Page 2, Try (continues), Finally 
TransferRequest Call, Try (continues), Finally, Load Page 2 

.. Quindi può essere utile sapere che cosa ordina che ti piacciano le cose.

Personalmente mi piace l'idea della finitura del codice corrente, PRIMA che il codice della pagina successiva abbia inizio. Quindi, Redirect o TransferRequest, anche se con quest'ultimo, potresti dover aggiungere un "return" appena sotto la tua chiamata se davvero intendevi che non eseguisse il resto del blocco try.

2

Penso che questo possa aiutare a

server.Transfer

server.Transfer viene utilizzato per trasferire il controllo da una pagina ad un'altra pagina. Il controllo esegue il codice su un'altra pagina ma il controllo non ritorna alla pagina precedente. In questo caso l'URL non cambia nel browser. non può navigare alle pagine esterne dell'applicazione. Sintassi: Server.Transfer ("URL di un'altra pagina"); Può accedere al controllo della pagina precedente sulla nuova pagina. PreviousPage.FindControl() è disponibile in una nuova pagina. Conserva le risorse del server evitando quel viaggio di andata e ritorno.

Server.Execute

Server.Execute è utilizzato per trasferire il controllo da una pagina ad un'altra pagina. Il controllo esegue il codice su un'altra pagina e torna alla pagina precedente. In questo caso l'URL non cambia nel browser. non può navigare alle pagine esterne dell'applicazione. Sintassi: Server.Execute ("URL di un'altra pagina"); Può accedere al controllo della pagina precedente sulla nuova pagina. PreviousPage.FindControl() è disponibile in una nuova pagina. Conserva le risorse del server evitando quel viaggio di andata e ritorno.

Problemi correlati