怎么将一个页面的所有控件设置为不可用状态

如何将一个页面的所有控件设置为不可用状态?
1.如何将一个页面的所有控件设置为不可用状态,并且这些控件还是可见的。也就是说我不想让别人编辑但是可以然别人观看。
我用的如下的方法好像不行啊:
                protected   void   Page_Load(object   sender,   EventArgs   e)
                {
                        foreach   (Control   c   in   this.Controls)
                        {
                                if(c   is   WebControl)
                                        (c   as   WebControl).Enabled   =   false;
                        }
                }
大家给我检查下,是什么地方出了问题啊。
2.还有另一个问题:有关页面的生命周期和控件的生命周期的一个问题,我自己制作了一个用户控件保存在a.ascx中,我又在b.aspx页面中加载它(b.aspx中创建了一个a.ascx类型的控件c),并且想在b.aspx页面的Page_Load事件中从数据库中读取数据,把读出来的数据加载到我的自定义控件c中。我弄的好像不行。是怎么回事这是?

------解决方案--------------------
void DisableAllControl(Control c)
{
if(c is WebControl)
((WebControl)c).Enabled = false;
if(c.HasControls() == false;)
{
return;
}
foreach(Control child in c.Controls)
{
DisableAllControl(child);
}
}

DisableAllControl(this);