这几乎是不可能的。
为什么?
每个页面都有生命周期,每个生命周期,都会做一些事情。InitComplete(初始化页面)事件,这是事件就是用来为runat=“server”的控件保存入控件树,并且加载视图状态。也正因为有这个事件,将runat=“server”的控件保存入控件树,我们才能在后台中通过id访问到服务器空间。
从1可以看出,如果你想为任何一个控件添加runat=“server”,一定要在InitComplete()这个事件之前,添加这个属性。那么只有在Init()这个时间中,找到你想操作的控件,然后添加runat属性,但是这个时候,你根本找不到你想操作的控件,因为控件还没添加入控件树。
asp.net中为一个动态控件添加runat="server"属性方法:
定义一个button:
Button b = new Button();
b.Text = "Go back!";
b.ID = "btn_Back";
//设置click事件:
b.Click += new EventHandler(btn_Click);
然后注册btn_Click函数:
void btn_Click(object sender, EventArgs e)
{
throw new NotImplementedException();
}
动态控件添加runat="server"之后才能在后台控制,不然后台也不能控制