在“a.aspx”的“Page_init()”中说,我只有“server.transferrequest(“b.aspx”)。
这很好用,显示“b.aspx”的内容,并且 browserurl 仍然停留在“a.aspx”。
快乐的时光。
但是,有谁知道如何从我的“b.aspx”(结果页面)中看到这个 url?
通常的 request.rawurl 和 request.url.absoluteuri 都将当前页面返回为“b.aspx”。
在“a.aspx”的“Page_init()”中说,我只有“server.transferrequest(“b.aspx”)。
这很好用,显示“b.aspx”的内容,并且 browserurl 仍然停留在“a.aspx”。
快乐的时光。
但是,有谁知道如何从我的“b.aspx”(结果页面)中看到这个 url?
通常的 request.rawurl 和 request.url.absoluteuri 都将当前页面返回为“b.aspx”。
Server.TransferRequest
执行指定 URL 的异步执行。这意味着您的客户不知道服务器上正在发生什么,因此从您的客户角度来看,它是同一页面。
如果您需要更改实际页面(这是最常见的),请使用Response.Redirect
.
也许在您进行传输之前,您可以将所需的信息保存在某个地方,然后在再次需要时检索它。
您可以使用PreviousPage获取进行服务器传输的源页面:
string previousPagesUrl = PreviousPage.Request.RawUrl;
编辑: @maxp,作为对您评论的回答,PreviousPage 仅适用于 Server.Transfer 和跨页面回发。
如果出现以下情况,您将为PreviousPage获得null:
您是否尝试过这种方法:
public void Transfer(string path, bool preserveForm )
http://msdn.microsoft.com/en-us/library/caxa892w.aspx
我目前遇到了同样的问题,我发现 Server 对象在 transfer 方法上有这个参数,可以让你保留或不保留原始请求表单。
NameValueCollection headers = new NameValueCollection();
headers["RawUrl"] = HttpContext.Current.Request.RawUrl;
Server.TransferRequest("b.aspx", true, null, headers);
然后Headers["RawUrl"]
在b.aspx
.