2009-07-23 91 views
3

在我的'a.aspx'的'Page_init()'中,我只有'server.transferrequest(「b.aspx」)。Server.Transferrequest()並獲取當前的URL

這很好用,顯示「b.aspx」的內容,browserurl仍然停留在「a.aspx」。

快樂的日子。

但是,有誰知道如何從我的「b.aspx」(結果頁)看到這個URL?

通常的request.rawurl和request.url.absoluteuri都將當前頁面返回爲「b.aspx」。

+0

先生,你解決了你的任務嗎?因爲我面臨同樣的問題... – Denis 2015-11-24 21:00:01

回答

2

Server.TransferRequest執行指定URL的異步執行。這意味着你的客戶不知道在服務器上發生了什麼,所以從你的客戶的角度來看,它是同一頁面。

如果您需要更改實際頁面(這是最常見的頁面),請使用Response.Redirect

+0

我需要保持原來的網址不變。 – maxp 2009-07-23 12:56:13

+0

我看到的唯一選擇是將其另存爲hiddenField。沒有直接的方法來實現這一點。 – Sergio 2009-07-23 13:02:01

1

也許在您進行傳輸之前,您可以將您需要的信息保存在某個地方,然後在需要時再檢索它。

+0

將其存儲在會話中。儘管如此,還不夠優雅。 – maxp 2009-07-23 15:11:30

1

您可以使用PreviousPage獲得源頁面,使服務器轉移:

string previousPagesUrl = PreviousPage.Request.RawUrl; 

編輯: @maxp,作爲回答您的評論,|上一頁只適用於的Server.Transfer和跨網頁提交。

你會得到|上一頁如果:

  • 源頁面重定向到目標頁面。
  • 源頁面上的鏈接將頁面轉發到目標頁面。
0

你有沒有嘗試過這種方法:

public void Transfer(string path, bool preserveForm) 

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

我目前在同樣的問題了,而且我發現服務器對象有給你posibility上傳輸方法這個參數以保存原始請求表單。

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

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