2010-12-03 19 views
2

Wenn ichfalsche URL Anzeige nach Response.Redirect

Server.Transfer ("PageName.aspx");

Ich bin auf die richtige Seite übertragen, aber die URL ist die URL der ersten Seite.

Mit anderen Worten sagen page1.aspx Server.Transfers zu Page2.aspx.

Page2.aspx gemacht wird, aber die URL liest page1.aspx.

Das Problem war, dass ich Parameter an page2 in der URL übergeben muss, und die Parameter nicht durchkommen.

Ich habe um sie unter Verwendung

Response.Redirect ("PageName.aspx Parm = val?");

Ich hatte Server.Transfer verwendet, weil ich unter dem Eindruck war, dass es effizienter war.

Was sind die anderen Unterschiede? Gibt es noch andere Gründe, einen als den anderen zu verwenden?

Bisher habe ich:

Verwenden Response.Redirect

  1. wenn Sie parms
  2. übergeben möchten, wenn Sie auf eine Website auf einem anderen Server

Nutzung übertragen möchten Server.Transfer für

  1. Die Effizienz des Speicherns eines Servers Roundtrip

Antwort

3

Sie haben recht, Server.Transfer ist effizienter, weil es einen Hin- und Rückweg zwischen dem Server und dem Browser verhindert. Response.Redirect sendet eine Weiterleitungsantwort zurück an den Browser, sodass der Browser eine neue Anfrage mit der umgeleiteten URL an den Server zurücksendet. Response.Redirect ermöglicht dem Browser zu wissen, was die umgeleitete URL war und zeigt sie im Adressfeld an. Im Fall von Server.Transfer hat der Browser keine Ahnung, dass die Antwort von einer anderen Seite kam.

0

Server.Transfer soll die URL in der Adressleiste die gleiche beibehalten; das ist das definierte Verhalten. Die Art, wie Sie es mit Response.Redirect tun, ist der richtige Weg, wenn Sie die URL ändern möchten.

2

Server.Transfer behält die ursprüngliche URL im Browser und ja, es ist effizienten, da es eine Hin- und Rückfahrt überspringt aber damit sollte es nur für Seiten auf dem Server verwendet werden.

Überprüfen Sie Server.Transfer vs Response.Redirect für eine bessere Verwendung von ihnen.

5

Nun, es gibt sicherlich detailliertere und wahrscheinlich mehr richtige Antworten als dieses, aber ...

Server.Transfer:

Browser: Hey Server, ich will pageOne.aspx!

Server: Suuuuure, hier gehen Sie (hinterhältig lachen). (liefert pageTwo.aspx)

Response.Redirect:

Browser: Hey Server, möchte ich pageOne.aspx!

Server: Eigentlich möchten Sie pageTwo.aspx.

Browser: Oh, ... okay. Kann ich pageTwo.aspx haben?

Server: Yup. (gibt pageTwo.aspx zurück)

+0

+1 für das Denken anders und effektiv. – Vishal