页面Preinit,Init,加载

时间:2008-10-09 01:35:02

标签: asp.net

我对page_init,页面preinit,加载有疑问。 我需要知道我们何时使用它还需要在生命周期的不同阶段调用对象。

请让我知道他们将如何处理每个活动

3 个答案:

答案 0 :(得分:4)

它称为页面生命周期,因为在页面请求的不同阶段,不同的对象会填充不同的信息。

以下是一些很好的链接:

http://msdn.microsoft.com/en-us/library/ms178472.aspx

http://www.15seconds.com/issue/020102.htm

答案 1 :(得分:4)

页面事件首先发生在用户控制事件之前。因此页面PageInit事件触发,然后所有用户控制PageInit事件触发。页面PageLoad事件触发,然后所有用户控制PageLoad事件触发。等...

有时开发人员会将私有对象的初始化放在他们的用户控件PageLoad处理程序中。

如果页面PageLoad处理程序调用使用未初始化的私有对象的用户控件方法,则会出现常见问题。由于用户控件PageLoad事件尚未触发,因此这些对象仍为“null”,抛出异常(Object未设置为Object实例)。

然后,我通常使用PageInit处理程序初始化用户控件中的内部对象。这样,当调用使用它们的公共方法时,它们不是“空”。

如果您不从页面PageInit处理程序调用任何用户控件方法,则此方法有效。在我看来,你不应该这样做。这不是页面代码中处理PageInit的原因。使用页面PageLoad处理程序进行用户控制方法调用。

答案 2 :(得分:1)

您可能会发现自己使用的是OnInit和Load。差异主要在于ViewInate反序列化事件,它发生在OnInit之后,因此您无法从OnInit中的控件读取值。 此外,在OnInit中,您可以(必须)动态地向页面添加新控件 所有其他的东西,比如填充网格和从表单字段中读取(文本框,下拉列表......)都在Load事件中。