当前位置:编程学习 > C#/ASP.NET >>

为什么在Page_PreInit那么早的事件里面就可以设定TextBox属性了?

按我的理解,Page_PreInit是在TextBox_Init之前,而TextBox_Init的时候,TextBox才初始化.那么为什么TextBox还没出现呢,就可以设定属性了?

我以为我很理解生命周期了,看了我还差很多.这个东西真是asp.net的核心问题 --------------------编程问答-------------------- 没有用它的服务器属性吧,只是定义了一些全局的客服端样式…… --------------------编程问答-------------------- TextBox.Text可以在Page_PreInit里面设定 --------------------编程问答-------------------- 这个init,不是实例化,实例化以后自然就可以对对象的属性操作了。 --------------------编程问答--------------------
引用楼主 aperture7 的回复:
按我的理解,Page_PreInit是在TextBox_Init之前,而TextBox_Init的时候,TextBox才初始化.那么为什么TextBox还没出现呢,就可以设定属性了?

我以为我很理解生命周期了,看了我还差很多.这个东西真是asp.net的核心问题


在Page触发任何事件之前,它实例化时,实例化了所有你在设计页面上声明的控件(但是不包括动态加载的控件)。

注意,只是实例化阶段。因此这些控件都是实例化的,而不是有真实状态的。同样地,虽然你在PreInit时可以改变TextBox属性,可是这往往只能实现最原始、没有什么用处的功能,因为此时TextBox并没有加载真实的运行状态信息,而仅仅是它自己实例化之后的状态。你也无法得到页面的ViewState等信息。因此此处你往往只能盲目地写上一两个空洞的代码,而不能写出根据状态不同而执行不同分支的代码。



对于任何aspx,你可以在aspx文件加上这样一段: 

<script runat="server">
    adfas   //这里随便些什么乱码都可以
</script>

然后在vs上点击鼠标右键选择“浏览器中查看”(不要经过vs编译),可以看到页面上有“显示完整的编译源:”着一个链接,点击它就可以看到详细的代码。你自己可以看看page到底是何时实例化那些子控件的!
--------------------编程问答--------------------
引用 4 楼 sp1234 的回复:
引用楼主 aperture7 的回复:
按我的理解,Page_PreInit是在TextBox_Init之前,而TextBox_Init的时候,TextBox才初始化.那么为什么TextBox还没出现呢,就可以设定属性了?

我以为我很理解生命周期了,看了我还差很多.这个东西真是asp.net的核心问题


在Page触发任何事件之前,它实例化时,实例化了所有你在设计页面上声明的控件(……


我有点怀疑啊,那请问你,一个控件在Init事件的时候都做了些什么? --------------------编程问答-------------------- 如果你说一个控件在Init事件以前就已经实例化了,那么为什么你在Page_PreInit事件可以设定Theme?
Theme显然是要在实例化之前设定的,不然都已经实例化了,那么控件的样子也就确定了,也就没有办法设定Theme了.由此可见,控件就是在Init事件实现实例化的 --------------------编程问答-------------------- 楼主自己写个控件试试,构造方法先执行,还是OnInit --------------------编程问答--------------------
引用 6 楼 aperture7 的回复:
如果你说一个控件在Init事件以前就已经实例化了,那么为什么你在Page_PreInit事件可以设定Theme?
Theme显然是要在实例化之前设定的,不然都已经实例化了,那么控件的样子也就确定了,也就没有办法设定Theme了.由此可见,控件就是在Init事件实现实例化的


没被实例化,哪来的Init事件... --------------------编程问答-------------------- 经过实验明白了,控件的实例化是在Page_PreInit之前,但是控件在Init这个阶段又在做什么呢?View State的读取是在Init和Load这段时间中间做的.Init这段时间难道控件什么都不做?
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,