我使用的是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");
}
答案 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观察服务器调用