|
昨天在网上看到了一个利用反射表单赋值到实体类对象的一个方法,自己就在加了个方法,从实体对象到表单,觉的很不错非常省事,所以把他写成了一个类,供以后使用
有一个问题就是 :表单名称和对象的属性名(我是属性赋值 你也可以用字段)要保持一样,,有点不安全,不过后台用挺好的,在说填写表单数据后台用的比较多 复制代码 代码如下: using System; using System.Data; using System.Configuration; using System.Collections; using System.Collections.Generic; using System.Reflection; using System.Collections.Specialized; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; /// <summary> /// 通过对象设置获取表单值 /// </summary> namespace Com.Fun { public static class SetFormToModel<T> { /// <summary> /// 将表单赋予对对象 /// </summary> /// <param name="t">实体对象</param> /// <param name="form">表单集合</param> public static void GetValue(T t, NameValueCollection form) { Type type = t.GetType(); PropertyInfo[] pi = type.GetProperties(); foreach (PropertyInfo p in pi) { if (form[p.Name] != null) { p.SetValue(t, Convert.ChangeType(form[p.Name], p.PropertyType), null); } } }
/// <summary> /// 将对象赋予表单 /// </summary> /// <param name="t">实体对象</param> /// <param name="c">页面对象</param> public static void SetValue(T t,Page page) { Type type = t.GetType(); PropertyInfo[] pi = type.GetProperties(); foreach (PropertyInfo p in pi) { System.Web.UI.HtmlControls.HtmlInputText text = page.FindControl(p.Name) as System.Web.UI.HtmlControls.HtmlInputText; if (text != null) { text.Value = p.GetValue(t, null).ToString(); } }
} } }
//调用 MHouseReco mh = new DHouseReco().GetModel(id); Com.Fun.SetFormToModel<MHouseReco>.SetValue(mh,this.Page);
MHouseReco mh = new MHouseReco(); Com.Fun.SetFormToModel<MHouseReco>.GetValue(mh, this.Request.Form);
|
|