2009-10-06 17 views
1

我有2個ASPX頁面,在第1頁的回發事件中,我將數據添加到當前上下文,然後做一個server.transfer第2頁。這一切都按預期工作然而由於Server.Transfer的,地址欄仍然示出了用於第1IE和Firefox不同回傳後行爲Server.Transfer

鏈接古怪是當我單擊2.頁

在IE

上的按鈕(7或8)當我點擊第2頁上的一個按鈕,頁面按預期發佈到第2頁。

在Firefox

當我點擊第2頁,頁面職位,以第1

有沒有其他人經歷過這樣的一個按鈕? 我做錯了什麼? 有沒有解決方法?

這實質上是在頁面的代碼1

Context.Items["x"] = x.Checked; 
Context.Items["y"] = y.Checked; 
Context.Items["z"] = z.Checked; 
Server.Transfer("page2.aspx", false); 
+0

使用跨頁回發爲我工作,但仍似乎是奇怪的行爲。 – jasonmw 2009-10-06 19:46:26

回答

1

如果您不使用PreviousPage,則可以使用Response.Redirect("~/Page2.aspx");來代替。這將通知用戶的瀏覽器頁面更改。

或者,如果您使用的是PreviousPage,則可以通過在所需的Button上設置PostBackUrl屬性來使用跨頁面回傳。這將使您的Server.Transfer邏輯得到正確處理。要訪問CheckBox的值,您需要在Page1上創建公共屬性,通過PreviousPage可訪問該屬性。

那麼第1頁將包含在後面的代碼這些屬性:

public bool xChecked { get x.Checked; } 
public bool yChecked { get y.Checked; } 
public bool zChecked { get z.Checked; } 

第2頁將使用|上一頁:

protected void Page_Load() 
{ 
    if(PreviousPage != null && PreviousPage is Page1) 
    { 
     if(((Page1)PreviousPage).xChecked) 
     { 
      //use xChecked like this 
     } 
    } 
} 
+0

謝謝你,我曾嘗試跨頁面回發,但試圖使用PreviousPage.FindControl,它不工作,但如果我公開我需要的值作爲屬性它像一個冠軍的作品。 – jasonmw 2009-10-06 19:39:36

2

做一個跨網頁提交呢?

MSDN: Cross-Page Posting in ASP.NET

+0

謝謝喬恩,這是正確的方向,但由於某種原因,文檔中指定的PreviousPage.FindControl不適用於我,控件也被標記爲公共。 – jasonmw 2009-10-06 19:43:34

1

你可以嘗試form.action設置爲你想要發佈到特定頁面。

第2頁的Form Load事件:

Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Me.Form.Action = "page2.aspx" 
End Sub 

這應該保證發佈到正確的頁面。

+0

感謝您的努力,但這仍然沒有解決問題。 – jasonmw 2009-10-06 18:58:44

相關問題