使用Server.Transfer后,浏览器URL也会更改

时间:2014-05-09 07:08:54

标签: c# asp.net server.transfer

我使用的是Asp.net 4.0。我从第1页到第2页执行server.transfer。该URL仍然是第1页。现在我单击第2页上的链接,这将把我转移到第3页。因此,URL应保留在第1页。相反,浏览器现在显示第2页的URL。这是预期的行为吗?

我实际上是想隐藏页面网址。

任何人都可以帮我这个。

我知道堆栈溢出有重复的问题,但它没有任何令人信服的答案 问题也是4岁。请帮助我或建议更好的方法来实现这个目标

代码:

在第1页

Btn1_Click(object sender, EventArgs e)
{

server.Transfer("Page2.aspx");

}

在第2页

Btn2_Click(object sender, EventArgs e)
{

server.Transfer("Page3.aspx");

}

2 个答案:

答案 0 :(得分:3)

请记住 " Server.Transfer不会更改地址栏中的网址"

检查此网站,您将清楚了解Server.Transfer和Response.Redirect

https://www.youtube.com/watch?v=xJVjRUHXYbE&index=54&list=PL6n9fhu94yhXQS_p1i-HLIftB9Y7Vnxlo

使用Server.Transfer

例如:

Page1.aspx,Page2.aspx

在page1.aspx中假设按钮中的代码点击这样

Server.Transfer的("〜/ page2.aspx&#34);

然后你将重定向到page2.aspx,但地址栏中显示的url是相同的,即; page1.aspx尽管你在page2.aspx。

当您使用Response.Redirect时,当您重定向到page2.aspx时,它将显示page2.aspx

来到您的问题:

这是预期的行为。

如果您在第二次使用Server.Transfer

,则要求更改Url

如果您是第一次运行page1.aspx,则会显示

Address Bar : `http://localhost:1234/WebSite3/Page1.aspx`

Action Name : "page1.aspx"//see pagesource

如果您点击page1.aspx中的按钮,它将显示page2.aspx,但具有相同的网址:

Address Bar : `http://localhost:1234/WebSite3/Page1.aspx`  but different

Action Name="page2.aspx"//see pagesource

如果你点击page2.aspx中的按钮,它将显示page3.aspx但是有不同的网址,如:

Address Bar : `http://localhost:1234/WebSite3/Page2.aspx`  but different 

Action Name="page3.aspx"//see pagesource

在这里你找到了不同的url为什么因为你的url是page1.aspx但是你的请求来自page2.aspx请参阅page source。因此,url从page1.aspx变为page2.aspx。

答案 1 :(得分:2)

阿琼, page2.aspx在呈现后进行服务器调用。正是该服务器调用导致名称更改。 Server.Transfer不会改变你的名字。

检查IE中是否发生此问题,如果没有,您可能会丢失页面引用的某些图像。否则使用fiddler观察服务器调用