/// <summary> /// String of name=value pairs representing server-side parameters /// </summary> /// <param name="properties">array of bindable control properties</param> /// <param name="bindings">list of DOM property bindings</param> static internal string[] PropertyLists(PropertyInfo[] properties, PropertyBindings bindings, IAjaxControl control) { // bound dynamic parameters StringBuilder boundList = new StringBuilder(); // static parameters StringBuilder staticList = new StringBuilder(); string pair; Regex empty = new Regex("^0|null|\\[\\]$"); Type attributeType = typeof(WebBindable); foreach (PropertyInfo p in properties) { if (p.CanRead) { pair = string.Format("\"{0}={{0}}\",", p.Name); if (bindings.Contains(p)) { boundList.AppendFormat(pair, bindings[p]); } else { string value = p.GetValue(control, null).ToJSON(); if (!string.IsNullOrEmpty(value) && !empty.IsMatch(value)) { value = value.Trim('"'); } else if (WebBindable.AlwaysBind(p)) { // always bindable properties are scripted even if null value = EcmaScript.Null; } else { // ignore this property continue; } staticList.AppendFormat(pair, value); } } } if (boundList.Length > 2) { boundList.Length -= 1; } // remove trailing comma staticList.AppendFormat("\"id={0}\"", control.ID); return(new string[] { staticList.ToString(), boundList.ToString() }); }
public ControlEventArgs(IAjaxControl c) { _control = c; }
internal PropertyBindings(IAjaxControl control) { _control = control; }