源從何起
經常在網上的論壇看到有人問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);
}