读书人

FindCountrol指定一个控件的id但实际

发布时间: 2012-01-26 19:40:46 作者: rapoo

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代码,没有发现问题。



[解决办法]
恐怕你自己还要仔细检查。

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

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

读书人网 >asp.net

热点推荐