【问题标题】:Incorrect Url displaying after Response.RedirectResponse.Redirect 后 URL 显示不正确
【发布时间】:2011-05-19 22:30:42
【问题描述】:

当我使用时

Server.Transfer("PageName.aspx");

我转到了正确的页面,但 url 是第一页的 url。

换句话说,说 page1.aspx Server.Transfers 到 page2.aspx

page2.aspx 已渲染,但 url 显示为 page1.aspx

问题是我需要在 url 中将参数传递给 page2,但参数没有通过。

我通过使用解决了它

Response.Redirect("PageName.aspx?parm=val");

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

还有哪些不同之处?使用其中一个而不是另一个还有其他原因吗?

到目前为止我有:

使用 Response.Redirect

  1. 如果你想传递参数
  2. 如果您想转移到另一台服务器上的站点

使用Server.Transfer

  1. 节省一台服务器往返的效率

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    嗯,肯定有比这更详细、可能更正确的答案,但是……

    Server.Transfer:

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

    服务器: Suuuuure,给你(偷偷笑)。 (返回 pageTwo.aspx)

    响应.重定向:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        Server.Transfer 在浏览器中维护原始 URL,是的,它更有效,因为它跳过了往返,但因此它应该只用于服务器上的页面。

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 2014-05-28
            • 2017-04-29
            • 1970-01-01
            • 2014-12-01
            • 1970-01-01
            • 2021-07-06
            • 1970-01-01
            • 2023-03-28
            • 1970-01-01
            相关资源
            最近更新 更多