asp.net - 为什么在回发时OnLoad/CreateChildControls顺序会更改?

标签 asp.net sharepoint moss

Web部件的生命周期是described,如下所示:

On Page Load

  1. Constructor
  2. OnInit
  3. OnLoad
  4. ConnectionConsumer method is called if web part is connectable
  5. CreateChildControls ...

On 1st Postback (PostBack click handler sets ViewState via public Property)

  1. Constructor
  2. OnInit
  3. CreateChildControls
  4. OnLoad
  5. PostBack click handling ...

On 2nd Postback (PostBack click handler sets ViewState via public Property)

  1. Constructor
  2. OnInit
  3. LoadViewState
  4. CreateChildControls
  5. OnLoad ...

如您所见,OnLoad和CreateChildControls更改了它们的顺序。这在我的代码中引入了一些困难,因为我需要收集以前在OnLoad元素中所做的各种数据。
是否有任何理由在回发阶段更改订单?

最佳答案

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

对于框架,它希望在OnInit和OnLoad之间设置发布的值(以便您可以在OnLoad期间访问这些值)。因为它需要控件才能执行此操作,所以它将为您调用确保 child 控件。

如果没有回发,则也不需要设置值,因此对确保 child 控件的调用将一直等到框架确实需要控件时。这恰好在OnLoad和OnPreRender之间。

关于asp.net - 为什么在回发时OnLoad/CreateChildControls顺序会更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1648447/

相关文章:

c# - asp.net 在 webform 上自动生成文本框 ID

asp.net - css 在表 asp.net datagrid 中指定第一个 tr

c# - 如何通过 C# 在 SharePoint 2007 列表中获取仅包含用户创建字段的列表?

SharePoint 2010 ashx 处理程序匿名访问

sharepoint - 创建需要唯一值的自定义字段

c# - Sharepoint Web 服务 GetListItems 不返回所有行

c# - 使用 C# .Net 可被 60 整除的任何数字的正则表达式?

java - 选择 : Migrating from Classic ASP to . NET 或迁移到开源平台

sharepoint - 将数据存储在列表定义共享点中

SharePoint 解决方案部署 : How do I prevent SP from resetting IIS when upgrading or retracting a globally deployed solutions?