gpt4 book ai didi

asp.net - 在 Load 事件中使用 LoadControl 的陷阱

转载 作者:行者123 更新时间:2023-12-03 21:59:14 25 4
gpt4 key购买 nike

我在 Load 事件中非常广泛地使用 LoadControl 方法。不过我还没有观察到任何问题,我怕什么MSDN documentation说:

When you load a control into a container control, the container raises all of the added control's events until it has caught up to the current event. However, the added control does not catch up with postback data processing. For an added control to participate in postback data processing, including validation, the control must be added in the Init event rather than in the Load event.



它实际上是什么意思?

在 Load 事件中加载控件时是否还有其他陷阱?

最佳答案

那一点 MSDN 文档(大部分)是错误的。正如您所发现的,即使您在 Load 中动态添加控件,回发数据处理和验证也能正常工作。事件。

以下是与此问题相关的 ASP.NET 页面生命周期的各个阶段:

  • 提高Init事件。
  • 回传:加载 View 状态和控制状态。
  • 回发:加载发布的表单数据(第一次尝试)。
  • 提高Load事件。
  • 回发:加载发布的表单数据(第二次尝试)。
  • 回发:验证表单并引发回发事件。

  • 当它说“添加的控件没有 catch 回发数据处理”时,文档是正确的。但它忽略了一个事实,即有 两个尝试加载已发布的表单数据,一次是在 Load 之前事件和一次之后。因此,如果您在 Load 中动态添加控件事件,它将在回发事件(例如 submitButton_Click )发生时填充已发布的表单数据。

    据我所知,这是主要的区别和潜在的陷阱:
  • 如果在Init中动态添加控件,您可以在 Load 中访问其发布的表单数据。 .
  • 如果在Load中动态添加控件,您必须等到回发事件(或者直接访问 HttpRequest.Form 集合)。
  • 关于asp.net - 在 Load 事件中使用 LoadControl 的陷阱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9507737/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com