运用反射给实体赋值,跟据控件命名

代码
   /// <summary>
         
///实体类赋值
         
/// 注意:控件名称需要和数据库字段名称一致
         
/// </summary>
         
/// <param name="t">实体对象</param>
         
/// <param name="form">Request.Form</param>
         
/// <param name="controlPrefix">控件前缀数据(服务端控件生成HTML时自动加入部分)</param>
         
/// <returns></returns>

         
public static int GetPost(ref T t, NameValueCollection form, string[] controlPrefixs)
         {
             
int va = 0;
             Type type 
= t.GetType();//获取类型
             PropertyInfo[] pi = type.GetProperties();//获取属性集合
             for (int i = 0; i < controlPrefixs.Length; i++)
             {
                 
foreach (PropertyInfo p in pi)
                 {
                     
if (form[controlPrefixs[i] + p.Name] != null)
                     {
                         
try
                         {
                             p.SetValue(t, Convert.ChangeType(form[controlPrefixs[i] 
+ p.Name], p.PropertyType), null);//为属性赋值,并转换键值的类型为该属性的类型
                             va++;//记录赋值成功的属性数
                         }
                         
catch (Exception ee)
                         {

                         }
                     }
                 }
             }
             
return va;
         }

 

posted @ 2010-05-18 11:30  玉菩提  阅读(302)  评论(0编辑  收藏  举报