首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么OnLoad / CreateChildControls命令在回发时会改变?

为什么OnLoad / CreateChildControls命令在回发时会改变?
EN

Stack Overflow用户
提问于 2009-10-30 07:20:49
回答 1查看 6.5K关注 0票数 10

web部件的生命周期是所述,如下所示:

页面加载

  1. 构造函数
  2. OnInit
  3. OnLoad
  4. 如果web部件是可连接的,则调用ConnectionConsumer方法。
  5. CreateChildControls ...

在第一次回发(PostBack单击处理程序通过公共属性设置ViewState )

  1. 构造函数
  2. OnInit
  3. CreateChildControls
  4. OnLoad
  5. PostBack点击处理..。

在第二次回发(PostBack单击处理程序通过公共属性设置ViewState )

  1. 构造函数
  2. OnInit
  3. LoadViewState
  4. CreateChildControls
  5. OnLoad ...

如您所见,OnLoad和CreateChildControls更改了它们的顺序。这在我的代码中引入了一些困难,因为我需要收集各种数据,这是我过去在OnLoad元素中所做的。

在后退阶段,有什么理由改变订单吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-08 22:56:33

每当框架(或您自己)调用EnsureChildControls方法时,都会调用EnsureChildControls。当您需要子控件时,应该调用此方法。

在框架中,它希望在OnInit和OnLoad之间设置已发布的值(以便您可以在OnLoad期间访问这些值)。因为它需要控件来完成这个任务,所以它将为您调用EnsureChildControls。

如果没有回发,也不需要设置值,因此对EnsureChildControls的调用将等待到框架需要控件的时候。这恰好在OnLoad和OnPreRender之间。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1648447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档