2011-05-20 65 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