3

在“a.aspx”的“Page_init()”中说,我只有“server.transferrequest(“b.aspx”)。

这很好用,显示“b.aspx”的内容,并且 browserurl 仍然停留在“a.aspx”。

快乐的时光。

但是,有谁知道如何从我的“b.aspx”(结果页面)中看到这个 url?

通常的 request.rawurl 和 request.url.absoluteuri 都将当前页面返回为“b.aspx”。

4

5 回答 5

2

Server.TransferRequest执行指定 URL 的异步执行。这意味着您的客户不知道服务器上正在发生什么,因此从您的客户角度来看,它是同一页面。

如果您需要更改实际页面(这是最常见的),请使用Response.Redirect.

于 2009-07-23T12:53:03.273 回答
1

也许在您进行传输之前,您可以将所需的信息保存在某个地方,然后在再次需要时检索它。

于 2009-07-23T13:01:26.817 回答
1

您可以使用PreviousPage获取进行服务器传输的源页面:

string previousPagesUrl = PreviousPage.Request.RawUrl;

编辑: @maxp,作为对您评论的回答,PreviousPage 仅适用于 Server.Transfer 和跨页面回发。

如果出现以下情况,您将为PreviousPage获得null

  • 源页面重定向到目标页面。
  • 源页面上的链接将页面转发到目标页面。
于 2009-07-23T13:16:31.387 回答
0

您是否尝试过这种方法:

public void Transfer(string path, bool preserveForm )

http://msdn.microsoft.com/en-us/library/caxa892w.aspx

我目前遇到了同样的问题,我发现 Server 对象在 transfer 方法上有这个参数,可以让你保留或不保留原始请求表单。

于 2011-11-04T09:43:46.727 回答
0
NameValueCollection headers = new NameValueCollection();
headers["RawUrl"] = HttpContext.Current.Request.RawUrl;
Server.TransferRequest("b.aspx", true, null, headers);

然后Headers["RawUrl"]b.aspx.

于 2015-11-24T21:12:01.833 回答