【IT168技术文档】
做项目开发的时候,大家应该经常都会遇到一个表里面的很多个字段的情况吧.在之前我接触的一个项目,有一个表有20多个字段.要向表中添加记录,和将一条数据绑定到页面上都要写很多代码.如:
下面是一个用户表的添加
将表里面的数据绑定到控件里面如下User user = new User(); user.Name = this.txt_Name.Text; user.Remark = this.txt_Remark.Text; user.Age = int.Parse(this.txt_Age.Text); user.Type=this.txt_Type.SelectedValue; user.Time=DateTime.Parse(this.txt_Time.Text); new Test().SaveOrUpdate(user);
上面的列子,数据类型不对我们得进行转换,下拉列表还要进行绑定.当然字段比较少,还不容易怎么出错,如果字段多了,这样一个一个的写太老火了,而且还容易忘记一些,或者把一些数据绑定错,或者忘了ToString().User user=(User) new test().Get(typeof(User),"1"); txt_Name.Text=user.Name; txt_Remark.Text=user.Remark; txt_Age.Text=user.Age.ToString(); txt_Type.SelectedValue=txt_Type.Items.FindByValue(user.Type); txt_Time.Text=User.Time.ToString("yyyy-MM-dd");
思路是这样的:
一、对于网页中控件的命名规为 "txt_实体类的字段名";
二、遍历页面中的所有控件,使用反射将控件的值赋给对象。和将对象的属性值绑定到控件上。
下面是要用到的一些方法
/**//// <summary> /// 字符串首字母大写 /// </summary> /// <param name="s"> </param> /// <returns> </returns> public static string ToProperCase(string s) { string revised = ""; if (s.Length > 0) { revised = s.Trim(); revised = revised.Substring(0, 1).ToUpper() + revised.Substring(1).ToLower(); } return revised; } /**//// <summary> /// 设置对象属性的值 /// </summary> public static void SetProperty(object obj, string name, object value) { PropertyInfo propertyInfo = obj.GetType().GetProperty(name); object objValue = Convert.ChangeType(value, propertyInfo.PropertyType); propertyInfo.SetValue(obj, objValue, null); } /**//// <summary> /// 获取对象属性的值 /// </summary> public static object GetProperty(object obj, string name) { //bindingFlags PropertyInfo propertyInfo = obj.GetType().GetProperty(name); return propertyInfo.GetValue(obj, null); }