2012-11-29 161 views
0

你好我想重定向到以前的頁面上點擊按鈕,但事情不會這麼好這裏是我的代碼:重定向到按鈕頁點擊

private string previousPage = string.Empty; 


protected void Page_Load(object sender, EventArgs e) 
{ 
    if(Request.UrlReferrer != null) 
    { 
     previousPage = Request.UrlReferrer.ToString(); 
     CrossSideScriptingErrorCheck.Text = previousPage; 
    } 
} 
protected void BackButton_Click(object sender , EventArgs e) 
{  
    Response.Redirect(previousPage); 
} 

當我第一次得到指向此頁面previousPage變量存儲正確的URL,但由於某種原因我點擊按鈕之後,previousPage值將變爲curent頁面url,然後我將被髮回到curent頁面。

我在這裏做錯了什麼,我該如何正確使用它?

編輯

我包這樣的代碼:

if(!IsPostBack) 
    { 
     if(Request.UrlReferrer != null) { 
      previousPage = Request.UrlReferrer.ToString(); 
      CrossSideScriptingErrorCheck.Text = previousPage; 
     } 
    } 

,我得到重定向到一個網頁,我沒有創建並具有link.On頁寫的是:

Object moved to here. 

「這裏」是一個鏈接,當我把它粘上去時,我回到頁面我按下按鈕

+0

嘗試把在如果( !IsPostBack()){} – sajanyamaha

+0

這有點複雜。您必須跟蹤有效的推薦人(請參閱下面的答案)。 –

+0

我剛看到編輯。請嘗試我的答案。 –

回答

1

當你有一個回傳,引薦是頁面本身,所以:-)

一個解決方案,這是預期的行爲將有這樣的事情:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) Session["prev"] = Request.UrlReferrer.ToString(); 
    if(Session["prev"] == null) {some code that disables the back button goes here!} 
} 
protected void BackButton_Click(object sender , EventArgs e) 
{  
    Response.Redirect(Session["prev"] as string); 
} 

的爲什麼這個答案有效,而其他人發佈到目前爲止沒有,是因爲我使用Session [「prev」]來記住最新的有效推薦人。所以訣竅在於:1)意識到當你有一個回傳時,引用者是頁面本身的url(OP所做的),2)記住最後一個非引用引用URL,這樣你可以在後退按鈕時使用它按下。

+0

謝謝你的解決方案 –

1

您需要測試回傳。當您單擊該按鈕時,該頁面將被重新發布到服務器,並且引用鏈接將變爲您所在的頁面,並覆蓋所需的值。

private string previousPage = string.Empty; 


protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!Page.IsPostBack) 
    { 
     if(Request.UrlReferrer != null) 
     { 
      previousPage = Request.UrlReferrer.ToString(); 
      CrossSideScriptingErrorCheck.Text = previousPage; 
     } 
    } 
} 
protected void BackButton_Click(object sender , EventArgs e) 
{  
    Response.Redirect(previousPage); 
} 
+0

其IsPostBack .............. –

+0

苛刻地得到一個投票。 – skyfoot

+0

@skyfoot - 同意。此外,Page.IsPostBack沒有問題 - 它們都可以工作。 – Darren

0

你忘了把它放在IsPostBack使y其工作這樣

if(!IsPostBack) 
{ 
    if(Request.UrlReferrer != null) 
    { 
     previousPage = Request.UrlReferrer.ToString(); 
     CrossSideScriptingErrorCheck.Text = previousPage; 
    } 
} 

這樣的代碼與它的工作...

0

當您點擊此按鈕,頁面加載之前執行點擊事件,所以它會重置previousPage變量的值。你需要用它進行檢查,以確保它不被貼後背,就像這樣:

if (!IsPostBack) { 
    previousPage = Request.UrlReferrer.ToString(); 
} 
0

我是最後一個來回答,但是是第一個發表評論

protected void Page_Load(object sender, EventArgs e) 
{ 
if(!IsPostBack) 
{ 
    if(Request.UrlReferrer != null) 
    { 
     previousPage = Request.UrlReferrer.ToString(); 
     CrossSideScriptingErrorCheck.Text = previousPage; 
    } 
    } 
} 
相關問題