Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选

首页 / 网页编程 / ASP.NET / ASP.NET框架数据回发与事件回发

ASP.NET框架数据回发与事件回发2011-10-04 博客园 不及格的程序员-八神源从何起

经常在网上的论坛看到有人问Page类的方法RegisterRequiresPostBack有什么用,它是做什么的呢?

简短的官方解释

MSDN对它的解释是将控件注册为要求在页面回发至服务器时进行回发处理的控件,说真的我知道这段话 想描述些什么,但是你知道怎么用它,在哪里用吗?

寻找回发真相

首先ASP.NET框架规定,凡是要进行数据回发的控件都要实现IPostBackDataHandler 接口,它有两个方 法LoadPostData、RaisePostDataChangedEvent,该接口方法将可以进行回发数据处理,并可以引发任何回 发数据已更改的事件.还有就是要在页生命周期的 Page_PreRender 事件中或该事件之前向页面注册控 件.

为什么要这里注册呢?好,那我们看看篇头提到的Page. RegisterRequiresPostBack这个方法的源码就 会明白了.

public void RegisterRequiresPostBack(Control control)

{

// Fail if the control is not an IPostBackDataHandler (VSWhidbey 184483) 指定控件必须实现 IPostBackDataHandler 接口

if (!(control is IPostBackDataHandler)) {

IPostBackDataHandler dataHandler = control._adapter as IPostBackDataHandler;

if (dataHandler == null)

throw new HttpException(SR.GetString (SR.Ctrl_not_data_handler));

}

if (_registeredControlsThatRequirePostBack == null)

_registeredControlsThatRequirePostBack = new ArrayList();

// 这里将需要注册回发的控件标识保存到数组列表中.

_registeredControlsThatRequirePostBack.Add(control.UniqueID);

}