在Response.Redirect之后显示不正确的URL

时间:2010-12-03 19:09:09

标签: c# asp.net

当我使用

  

Server.Transfer的( “PageName.aspx”);

我转移到正确的页面,但网址是第一页的网址。

换句话说,请说 page1.aspx Server.Transfers to page2.aspx

呈现

page2.aspx ,但网址为 page1.aspx

问题是我需要将参数传递给url中的page2,并且params没有通过。

我使用

解决了这个问题
  

的Response.Redirect( “PageName.aspx PARM = VAL?”);

我一直在使用Server.Transfer,因为我觉得它效率更高。

其他差异是什么?使用一个而不是另一个是否有任何其他原因?

到目前为止,我有:

使用Response.Redirect

  1. 如果你想传递parms
  2. 如果您要转移到其他服务器上的网站
  3. 使用Server.Transfer

    1. 保存一台服务器往返的效率

4 个答案:

答案 0 :(得分:5)

嗯,肯定有更详细,可能更正确的答案,但是......

Server.Transfer的:

  

浏览器:嘿服务器,我想要pageOne.aspx!

     

服务器: Suuuuure,你走吧(鬼鬼祟祟)。 (返回pageTwo.aspx)

的Response.Redirect:

  

浏览器:嘿服务器,我想要pageOne.aspx!

     

服务器:实际上,您需要pageTwo.aspx。

     

浏览器:哦,好吧。我可以请pageTwo.aspx吗?

     

服务器:是的。 (返回pageTwo.aspx)

答案 1 :(得分:3)

你是对的,Server.Transfer效率更高,因为它消除了服务器和浏览器之间的往返。 Response.Redirect将重定向响应发送回浏览器,强制浏览器使用重定向的URL将新请求发送回服务器。 Response.Redirect允许浏览器知道重定向的URL是什么,并将其显示在地址框中。在Server.Transfer的情况下,浏览器不知道响应来自不同的页面。

答案 2 :(得分:2)

Server.Transfer在浏览器中维护原始网址,是的,效率更高,因为它会跳过往返,但因此它应仅用于服务器上的网页。

检查Server.Transfer vs Response.Redirect以便更好地使用它们。

答案 3 :(得分:0)

Server.Transfer应该保持地址栏中的URL相同;这是定义的行为。如果要更改URL,使用Response.Redirect执行此操作的方式是正确的。