2011-12-21 59 views
1

我有頁「first.aspx」和「second.aspx」。現在從first.aspx,使用鏈接按鈕,我正在做「Response.Redirect()」到「Third.aspx」,並從second.aspx也使用鏈接按鈕我正在做「Response.Redirect()到」第三。 ASPX」,但我想禁用按鈕‘third.aspx’我從哪裏來‘只有first.aspx’我怎樣才能達致這如何獲取父頁面引用

回答

1

你可以嘗試使用:。

var enabled = Page.Request.UrlReferrer.ToString().Contains("first.aspx"); 
+0

根據我的經驗,不是一個可靠的解決方案,因爲所有瀏覽器都不使用正確的http頭。 – 2011-12-21 15:33:59

1

你可以檢查請求的指引,但可能會被欺騙。

Request.UrlReferrer 

或者你可以傳遞一個URL參數

或者,如果您不想依賴客戶端參數傳遞,則可以將最後一頁保存在服務器上的用戶會話中,然後在third.aspx頁面中檢查該頁。

0

當從first.aspx第一次來重定向到Third.aspx?從=,從second.aspx到來時重定向到Third.aspx?來自=次,然後使用get參數來禁用/啓用按鈕

+0

這些操作都不起作用嗎?對於window.open,我們可以傳遞這些查詢字符串引用,但response.redirect不起作用。 @Justin試試你我使用的是2003 visual studio,我沒有在urlrefernce.tostring()之後。沒有什麼像包含屬性 – user993935 2011-12-21 16:21:18

+0

Page.Request.UrlReferrer.ToString()沒有給我任何頁面引用。我知道它的工作原理。但對於response.redirect它無法正常工作 – user993935 2011-12-21 16:35:00

0

添加的查詢參數表明您來自哪個頁面:

Response.Redirect('third.aspx?referrer=first'); 

Response.Redirect('third.aspx?referrer=second'); 

在第三:

if (Request["referrer"] == "first"){ 
    button.Enabled = false; 
} 
0

我喜歡@Justin Niessner的響應,但可替換的方法是,而不是使用一個Response.Redirect使用所討論的按鈕的PostBackUrl屬性。這將導致頁面「發佈」到third.aspx頁面,並從那裏你將有權訪問「Page.PreviousPage」。前一頁上的更多信息可以是found on MSDN

http://msdn.microsoft.com/en-us/library/system.web.ui.page.previouspage.aspx

編輯:
獎金使用PostBackUrl特性是,它會調用標準的.Net驗證控件,將有助於防止@Jan提到的欺騙。這並不是不可能的,但它肯定會讓它變得更加困難。