当我使用
时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
使用Server.Transfer
答案 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执行此操作的方式是正确的。