您的位置:首页 > 其它

将form表单的值反射到Model中

2015-07-23 12:49 183 查看
/// <summary>
        /// 将form表单的值反射到Model中
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="form"></param>
        /// <returns></returns>
        protected T FormToModel<T>(NameValueCollection form) 
        {
            Type t = typeof(T);
            PropertyInfo[] properties = t.GetProperties();
            T obj = Activator.CreateInstance<T>();
            //遍历T里面的字段获得属性
            foreach (PropertyInfo pro in properties)
            {
                Type convertsionType = pro.PropertyType;
                //获取T的每个字段转换为大写
                string pi = pro.Name.ToUpper();
                //遍历Form表单里面的控件得到控件的Name
                foreach (var item in form.Keys)
                {
                    //获取Form表单的控件Name转为大写
                    string name = item.ToString().ToUpper();
                    //得到表单元素的Value值
                    var data = form[name];
                    //对比Form中的Name与Model中的字段名,若一样就写入,程序跳出内循环
                    if (pi == name)
                    {
                        //为T的字段赋值,若数据类型不一致,则进行转换
                        pro.SetValue(obj, HackType(data, convertsionType),null);
                        break;
                    }
                }
            }
            return obj;
        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: