发一个自动给实体赋值的方法
在对数据表做添加和修改操作时需要给实体的每一个属性赋值,我所写这个方法主要目的是为了简化这一步,把实体传入方法,自动完成赋值。
代码
1 public static class RequestFormToEntity<T> where T : new()
2 {
3 /// <summary>
4 /// 实体类赋值
5 /// 注意:控件名称需要和数据库字段名称一致
6 /// </summary>
7 /// <typeparam name="T"></typeparam>
8 /// <param name="t">实体对象</param>
9 /// <param name="form">Request.Form</param>
10 /// <param name="controlPrefix">控件前缀(服务端控件生成HTML时自动加入部分)</param>
11 /// <returns></returns>
12 public static int GetPost(ref T t, NameValueCollection form, string controlPrefix)
13 {
14 int va = 0;
15 Type type = t.GetType();//获取类型
16 PropertyInfo[] pi = type.GetProperties();//获取属性集合
17 foreach (PropertyInfo p in pi)
18 {
19 if (form[controlPrefix + p.Name] != null)
20 {
21 try
22 {
23 p.SetValue(t, Convert.ChangeType(form[controlPrefix + p.Name], p.PropertyType), null);//为属性赋值,并转换键值的类型为该属性的类型
24 va++;//记录赋值成功的属性数
25 }
26 catch
27 {
28 //return 0;
29 }
30 }
31 }
32 return va;
33 }
34 }
2 {
3 /// <summary>
4 /// 实体类赋值
5 /// 注意:控件名称需要和数据库字段名称一致
6 /// </summary>
7 /// <typeparam name="T"></typeparam>
8 /// <param name="t">实体对象</param>
9 /// <param name="form">Request.Form</param>
10 /// <param name="controlPrefix">控件前缀(服务端控件生成HTML时自动加入部分)</param>
11 /// <returns></returns>
12 public static int GetPost(ref T t, NameValueCollection form, string controlPrefix)
13 {
14 int va = 0;
15 Type type = t.GetType();//获取类型
16 PropertyInfo[] pi = type.GetProperties();//获取属性集合
17 foreach (PropertyInfo p in pi)
18 {
19 if (form[controlPrefix + p.Name] != null)
20 {
21 try
22 {
23 p.SetValue(t, Convert.ChangeType(form[controlPrefix + p.Name], p.PropertyType), null);//为属性赋值,并转换键值的类型为该属性的类型
24 va++;//记录赋值成功的属性数
25 }
26 catch
27 {
28 //return 0;
29 }
30 }
31 }
32 return va;
33 }
34 }
调用方法:
SystemParameterEntity se = new SystemParameterEntity(true);
RequestFormToEntity<SystemParameterEntity>.GetPost(ref se, Request.Form, "ctl00$ContentPlaceHolder1$");
RequestFormToEntity<SystemParameterEntity>.GetPost(ref se, Request.Form, "ctl00$ContentPlaceHolder1$");