用反射将业务对象绑定到ASP.NET__教程 |
|
日期:2007-5-15 21:03:33 人气:80 [大 中 小] |
|
|
|
<param name="obj">The object whose properties are being retrieved</param> /// <param name="objProperty">The property of the object being retrieved [page_break] </param> /// <param name="control">The control whose ID matches the object's property name.</param> /// <param name="controlPropertiesArray">An array of the control's properties</param> /// <param name="propertyName">The name of the Control property being set</param>
/// <param name="type">The correct type for the Control property</param> /// <returns>Boolean for whether the property was found and set</returns> private static bool FindAndSetControlProperty(object obj, PropertyInfo objProperty, Control control, PropertyInfo[] controlPropertiesArray, string propertyName, Type type) { // iterate through control properties // foreach (PropertyInfo controlProperty in controlPropertiesArray) { // check for matching name and type // if (controlProperty.Name == propertyName && controlProperty.PropertyType == type) { // set the control's property to the business object property value // controlProperty.SetValue(control, Convert.ChangeType(objProperty.GetValue(obj, null), type), null); return true; } } return false; }
/// <summary> /// Binds your the values in <see cref="Control"/>s to a business object. /// </summary> /// <param name="obj">The object whose properties are being bound to Control values</param> /// <param name="container">The control in which the form Controls reside (usually a Page or ContainerControl)</param> public static void BindControlsToObject(object obj, Control container) { [page_break] if (obj == null) return;
// Get the properties of the business object // Type objType = obj.GetType(); PropertyInfo[] objPropertiesArray = objType.GetProperties();
foreach (PropertyInfo objProperty in objPropertiesArray) {
Control control = container.FindControl(objProperty.Name); if (control == null) continue; if (control is ListControl) { ListControl listControl = (ListControl)control; if (listControl.SelectedItem != null) objProperty.SetValue(obj, Convert.ChangeType(listControl.SelectedItem.Value, objProperty.PropertyType), null);
} else { // get the properties of the control // Type controlType = control.GetType(); PropertyInfo[] controlPropertiesArray = controlType.GetProperties();
// test for common properties // bool success = false; success = FindAndGetControlProperty(obj, objProperty, control, controlPropertiesArray, "Checked", typeof(bool));
if (!success) success = FindAndGetControlProperty(obj, objProperty, control, controlPropertiesArray, "SelectedDate", typeof(DateTime));
if (!success) success = FindAndGetControlProperty(obj, objProperty, control, controlPropertiesArray, "Value", typeof(String));
|
|
出处:本站原创 作者:佚名 |
|
|