void ProcessPostData (NameValueCollection data, bool second)
{
NameValueCollection requestValues = _requestValueCollection == null ? new NameValueCollection (SecureHashCodeProvider.DefaultInvariant, CaseInsensitiveComparer.DefaultInvariant) : _requestValueCollection;
if (data != null && data.Count > 0) {
var used = new Dictionary <string, string> (StringComparer.Ordinal);
foreach (string id in data.AllKeys) {
if (id == "__VIEWSTATE" || id == postEventSourceID || id == postEventArgumentID || id == ClientScriptManager.EventStateFieldName)
continue;
if (used.ContainsKey (id))
continue;
used.Add (id, id);
Control ctrl = FindControl (id, true);
if (ctrl != null) {
IPostBackDataHandler pbdh = ctrl as IPostBackDataHandler;
IPostBackEventHandler pbeh = ctrl as IPostBackEventHandler;
if (pbdh == null) {
if (pbeh != null)
formPostedRequiresRaiseEvent = pbeh;
continue;
}
if (pbdh.LoadPostData (id, requestValues) == true) {
if (requiresPostDataChanged == null)
requiresPostDataChanged = new List <IPostBackDataHandler> ();
requiresPostDataChanged.Add (pbdh);
}
if (_requiresPostBackCopy != null)
_requiresPostBackCopy.Remove (id);
} else if (!second) {
if (secondPostData == null)
secondPostData = new NameValueCollection (SecureHashCodeProvider.DefaultInvariant, CaseInsensitiveComparer.DefaultInvariant);
secondPostData.Add (id, data [id]);
}
}
}
List <string> list1 = null;
if (_requiresPostBackCopy != null && _requiresPostBackCopy.Count > 0) {
string [] handlers = (string []) _requiresPostBackCopy.ToArray ();
foreach (string id in handlers) {
IPostBackDataHandler pbdh = FindControl (id, true) as IPostBackDataHandler;
if (pbdh != null) {
_requiresPostBackCopy.Remove (id);
if (pbdh.LoadPostData (id, requestValues)) {
if (requiresPostDataChanged == null)
requiresPostDataChanged = new List <IPostBackDataHandler> ();
requiresPostDataChanged.Add (pbdh);
}
} else if (!second) {
if (list1 == null)
list1 = new List <string> ();
list1.Add (id);
}
}
}
_requiresPostBackCopy = second ? null : list1;
if (second)
secondPostData = null;
}