Asp.Net form赋值model

来源:互联网 发布:cad网络拓扑图下载 编辑:程序博客网 时间:2024/06/05 01:05
        /// <summary>    
        /// 为Model赋值,下面是调用实例 
        /// 约定:表单项的名称最好和实体类的属性名字对应(如果你要不一样,反射方法根据自己的规则改造下)。
        /// 为表单赋值,如果是webform的话也可以采取这种方式,可以自己写下,原理差不多。 
        /// </summary>    
        /// <typeparam name="T">Model</typeparam>    
        /// <param name="t">model</param>    
        /// <param name="form">Request</param>    
        /// <returns></returns>    
        public static int GetPost<T>(ref T t, NameValueCollection form)
        {
            int va = 0;
            Type type = t.GetType(); //获取类型    
            PropertyInfo[] pi = type.GetProperties(); //获取属性集合    
            foreach (PropertyInfo p in pi)
            {
                if (form[p.Name] != null)
                {
                    try
                    {
                        if (!p.PropertyType.IsGenericType)//判断为Nullable的属性
                        {
                            p.SetValue(t, Convert.ChangeType(form[p.Name], p.PropertyType), null);//为属性赋值,并转换键值的类型为该属性的类型    
                            va++; //记录赋值成功的属性数    
                        }
                        else
                        {
                            p.SetValue(t, Convert.ChangeType(form[p.Name], Nullable.GetUnderlyingType(p.PropertyType)), null);//为属性赋值,并转换键值的类型为该属性的类型    
                            va++; //记录赋值成功的属性数
                        }
                    }
                    catch
                    {
                    }
                }
            }
            return va;
        }
0 0
原创粉丝点击