在面向对象语言中,如果类A包含类B作为成员,则可以从类A的构造函数访问类B的属性(在首先实例化类B之后)。
然而在ASP.Net中,我的理解是一个Page对象包含服务器控件对象作为其成员,但我不明白为什么,如果你试图从Page构造函数访问服务器控件的属性,你会得到一个NullReferenceException。
答案 0 :(得分:4)
这听起来更像是一个生命周期问题。页面上包含的控件不会与Page对象同时创建,但会在httprequest的循环中创建。
此页面清楚地显示了周期:http://msdn.microsoft.com/en-us/library/ms178472.aspx。
您应该覆盖Init方法,以确保您的控件已初始化。引自文章
在初始化所有控件并应用任何外观设置后触发。单个控件的Init事件发生在页面的Init事件之前。 使用此事件可以读取或初始化控件属性。
答案 1 :(得分:3)
在构造函数中,ASPX尚未运行,因此所有服务器端控件都是null
。
将代码移至Page_Load
。