自訂控制項若需接收用戶端輸入資料(如文字方塊、下拉清單),必須實作 IPostBackDataHandler 介面。本文詳細說明兩個核心方法的運作時機與回傳值意義:
public bool LoadPostData(string postDataKey, NameValueCollection postCollection)
{
// 比對舊值(ViewState)與新值(postCollection[postDataKey])
// 回傳 true 表示資料已變更,框架將自動呼叫 RaisePostDataChangedEvent()
// 回傳 false 表示無變更,不觸發後續事件
}
public void RaisePostDataChangedEvent()
{
// 資料確認變更後的通知處理,如觸發 TextChanged 事件
}
postDataKey:控制項的 UniqueID,對應表單欄位 name 屬性。postCollection:Request.Form 集合,包含所有表單欄位新值。<input type="text" name="<%= UniqueID %>" ... />。LoadPostData 取得 postCollection[postDataKey],與 ViewState["Value"] 比較。true;否則回傳 false。RaisePostDataChangedEvent。掌握此機制,才能開發出行為與內建輸入控制項一致的自訂元件。