【问题标题】:Browser URL changing even after using Server.Transfer即使在使用 Server.Transfer 后浏览器 URL 也会发生变化
【发布时间】:2014-05-09 07:08:53
【问题描述】:

我正在使用 Asp.net 4.0。我做了一个 server.transfer 从第 1 页到第 2 页。URL 仍然是第 1 页。现在我单击第 2 页上的链接,这会将我转到第 3 页。所以 URL 应该保留在第 1 页。相反,浏览器现在显示第 2 页的 URL。这是预期的行为吗?

我实际上是想隐藏页面 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页和第3页之间转移?
  • 您点击的第 2 页上的“链接”的性质是什么?它只是页面上的<a>,还是某种形式的服务器端控件?
  • @Zaki 使用 server.transfer
  • @Damien_The_Unbeliever 它的服务器端控制和server.transfer用于转移到其他页面
  • 嗯,这就是 URL 发生变化的原因。浏览器正试图移动到另一个页面,它必须通过向第 2 页提交回发请求来做到这一点,以便服务器端控件可以工作。所以浏览器必须知道它正在访问第 2 页。

标签: c# asp.net server.transfer


【解决方案1】:

记住 “Server.Transfer 不会更改地址栏中的 URL”

查看此站点,您将清楚了解 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");

然后您将重定向到 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 但具有相同的 url,例如:

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

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

如果您单击 page2.aspx 中的按钮,它将显示 page3.aspx,但具有不同的 url,例如:

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

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

在这里你找到不同的 url 为什么因为即使你的 url 是 page1.aspx 但你的请求来自 page2.aspx 请参阅页面源。因此,url 从 page1.aspx 更改为 page2.aspx。

【讨论】:

  • 这不是我的问题,我想你会想念的。请再读一遍
  • @ArjunSharma 看到我更新的答案我会在一点点时间发送一些代码。否则检查视频你会明白的想法
  • 我担心的是即使在使用 server.Transer 后浏览器 URL 也在发生变化,这不应该发生
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 2016-05-20
    相关资源
    最近更新 更多