Server.Transferrequest()并获取当前URL

时间:2009-07-23 12:47:32

标签: asp.net server.transfer

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

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

快乐的日子。

然而,是否有人知道如何从我的“b.aspx”(结果页面)中查看此网址?。

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

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

也许在您进行转移之前,您可以在某处保存所需的信息,然后在需要时再次检索。

答案 2 :(得分:1)

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

string previousPagesUrl = PreviousPage.Request.RawUrl;

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

如果出现上一页,您将获得 null

  • 源页面重定向到目标页面。
  • 源页面上的链接将页面转发到目标页面。

答案 3 :(得分:0)

您是否尝试过此方法:

public void Transfer(string path, bool preserveForm )

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

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

答案 4 :(得分:0)

NameValueCollection headers = new NameValueCollection();
headers["RawUrl"] = HttpContext.Current.Request.RawUrl;
Server.TransferRequest("b.aspx", true, null, headers);

然后在Headers["RawUrl"]中使用b.aspx