加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 06:59:19 所属栏目:asp.Net 来源:网络整理
导读:我在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 cur
我在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事件.
>回发:加载视图状态和控件状态.
>回发:加载已发布的表单数据(首次尝试).
>提升Load事件.
>回发:加载发布的表单数据(第二次尝试).
>回发:验证表单并引发回发事件.

当文档说“添加的控件无法跟上回发数据处理”时,文档是正确的.但它忽略了这样一个事实:有两次尝试加载已发布的表单数据,一次是在Load事件之前,一次是在之后.因此,如果在Load事件中动态添加控件,则会在发生回发事件(例如submitButton_Click)时使用已发布的表单数据填充该控件.

据我所知,这是主要的区别和潜在的陷阱:

>如果在Init中动态添加控件,则可以在Load中访问其发布的表单数据.>如果在Load中动态添加控件,则必须等到回发事件(或者直接访问HttpRequest.Form集合).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读