小编m3s*_*3s5的帖子

为什么ASP.NET动态控件即使在Page_Load中添加时也能保持ViewState?

我做了一些与动态控件和ViewState相关的研究.

我读到为了保持ViewState的动态控制,你必须在Page_Init事件中添加它.这是有道理的,因为PageLifeCycle是:

  1. 初始化.
  2. LoadViewState.
  3. LoadPostbackData.
  4. 加载.
  5. RaisePostbackEvent.
  6. SaveViewState.
  7. 渲染.

但我做了一个测试应用程序,我发现即使我在Page_Load事件中添加控件而不是之后,ViewState和属性值也会保留.从此我才发现矛盾的信息.有人说控件可能会追上PageLifeCycle,其他人说你必须在Page_Init中添加它们.有人可以为我澄清一下吗?

同样在msdn中我发现:

注意您可以在Page_Load事件处理程序中加载控件并正确维护视图状态.这完全取决于您是否以编程方式设置动态加载控件的任何属性,如果是,则相对于Controls.Add(dynamicControl)行执行此操作.对此的深入讨论有点超出了本文的范围,但它可能起作用的原因是因为Controls属性的Add()方法以递归方式将父视图状态加载到其子节点中,即使已经过了加载视图状态阶段.

但我并不完全理解这一点,所以我希望有人可以解释一下.先感谢您.

asp.net lifecycle controls dynamic

8
推荐指数
1
解决办法
3382
查看次数

标签 统计

asp.net ×1

controls ×1

dynamic ×1

lifecycle ×1