按照MSDN的说法,页面上每一个实现了IPostBackDataHandler接口的控件在回传时都会执行自己的LoadPostData方法来更新自己的状态(参见“处理回发数据”),前提是要在自定义控件内添加一个“Name”属性和自定义控件的UniqueId相同的元素.
我对这个前提比较感兴趣.想找一下为什么要这个前提:于是源代码发现
private void ProcessPostData(NameValueCollection postData, bool fBeforeLoad)
foreach (string str in postData)
if ((postBackDataHandler != null) && postBackDataHandler.LoadPostData(str, this._requestValueCollection))
我发现 postData 和 _requestValueCollection 值是相等的.
那为什么在具体控件中调用
bool IPostBackDataHandler.LoadPostData(string postDataKey, NameValueCollection postCollection)
这个方法时发现如果你不按照上面的做法(在自定义控件内添加一个“Name”属性和自定义控件的UniqueId相同的元素.),
postDataKey 与 postCollection 的 Key 不相同呢.