2011-05-20 62 views
0

我有一些問題與此代碼:問題的會議解壓

private void BoxVisibility(bool email, bool link, Control linkButton) 
    { 
     mainEmail.Visible = email; 
     foreach (Control c in PlaceHolder1.Controls) 
     { 
      c.Visible = false; 
     } 
     if (linkButton != null) 
     { 
      PlaceHolder1.Visible = true; 
      linkButton.Visible = link; 
     } 

    } 

當我送方法控制一切正常,但是當起初我把控制Session['temp'] = Control,然後調用該方法類似BoxVisibility(false, true, (Control) this.Session['temp'])在這個案例Control linkButton.Visible = link;不需要true,他仍然是false

回答

0

「控件」是參考這個特定頁面的特定實例。

頁面是在每個請求上重新創建的,因此對控件的舊實例的引用不再有效。因此,不要將控件存儲在比單個請求更長的任何事物(Session,ViewState,靜態字段)中。您網頁的本地(實例)字段是安全的。

+0

我覺得這個問題在另一個。當我嘗試調試我的應用程序時,您會看到我嘗試更改對象屬性_before_頁面重新加載。 – seth 2011-05-20 12:39:25

+0

另外,我嘗試獲取新的對象引用並更改它們,並得到相同的結果。 – seth 2011-05-20 13:12:49