Exemple #1
0
        /// <summary>
        /// 把form提交的数据集合,绑定到实体T类对应的属性值中
        /// <para>selType=1 从GET请求数据集合中寻找</para>
        /// <para>selType=2 从POST请求数据集合中寻找</para>
        /// <para>selType=3 先从GET,如果没值,则继承从POST</para>
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="request"></param>
        /// <param name="selType"></param>
        /// <returns></returns>
        public static T GetModel <T>(this HttpRequestBase request, int selType = 1) where T : new()
        {
            var type = typeof(T);

            if (type == null)
            {
                return(default(T));
            }
            var proArrs = type.GetProperties();

            if (proArrs == null || proArrs.Count() <= 0)
            {
                return(default(T));
            }
            T t = new T();

            foreach (var itemPro in proArrs)
            {
                string valueStr = string.Empty;
                if (selType == 1)
                {
                    valueStr = request.GetQ(itemPro.Name);
                }
                else if (selType == 2)
                {
                    valueStr = request.GetF(itemPro.Name);
                }
                else if (selType == 3)
                {
                    valueStr = request.GetQ(itemPro.Name);
                    if (valueStr.IsNullOrWhiteSpace())
                    {
                        valueStr = request.GetF(itemPro.Name);
                    }
                }
                try {
                    var value = Convert.ChangeType(valueStr, itemPro.PropertyType);
                    itemPro.SetValue(t, value, null);
                } catch { }
            }
            return(t);
        }