当前位置: 代码迷 >> ASP.NET >> FindCountrol指定一个控件的id,但实际上它却同时指定了2个,郁闷之极。解决办法
  详细解决方案

FindCountrol指定一个控件的id,但实际上它却同时指定了2个,郁闷之极。解决办法

热度:8340   发布时间:2013-02-26 00:00:00.0
FindCountrol指定一个控件的id,但实际上它却同时指定了2个,郁闷之极。
FindCountrol指定一个控件的id,但实际上它却同时指定了2个,郁闷之极。

目录:
Default.aspx     里面有个用户控件UserLogon.ascx名字叫ModuleUserLogon
UserLogon.ascx中有两个Panel控件,一个PanelUserLogon,一个PanelProductInfo。

Panel   plUserLogon   =   (Panel)(this.FindControl( "ModuleUserLogon ").FindControl( "PanelUserLogon "));
Panel   plProductInfo   =   (Panel)(this.FindControl( "ModuleUserLogon ").FindControl( "PanelProductInfo "));

if(Session[UserId]   ==   null)
{
      plUserLogon.Visible   =   true;//如果用户没有登录就显示登录框
      plProductInfo.Visible   =   false;//如果用户没有登录就不显示产品信息
}

以上代码中plUserLogon居然没有显示出来(用户没有登录),但是我调试它已经执行了plUserLogon.Visible   =   true;这一句。

如果我把plProductInfo.Visible改成true;
plUserLogon、plProductInfo居然都显示出来了。

我仔细检查了html代码,没有发现问题。



------解决方案--------------------------------------------------------
恐怕你自己还要仔细检查。

不过像你这样的代码,往往是因为设计者太聪明,过分聪明,以至于写出的程序给自己制造了很多很多多余的耦合对象。

用户控件应该隐藏内部控件的构造,如果摊开来让外部随便想当然地假设构造,就没有长久的戏可唱了。控件设计者就可以说没有把握大系统的能力了。
  相关解决方案