zoukankan      html  css  js  c++  java
  • QueryString to Dictionary<string, string>

    public class ModelConvertHelper<T> where T : new() {// 此处一定要加上new()
    public static IList<T> ConvertToModel(DataTable dt) {

    IList<T> ts = new List<T>();// 定义集合
    Type type = typeof(T); // 获得此模型的类型
    string tempName = "";
    foreach (DataRow dr in dt.Rows) {
    T t = new T();
    PropertyInfo[] propertys = t.GetType().GetProperties();// 获得此模型的公共属性
    foreach (PropertyInfo pi in propertys) {
    tempName = pi.Name;
    if (dt.Columns.Contains(tempName)) {
    if (!pi.CanWrite) continue;
    object value = dr[tempName];
    if (pi.PropertyType.Name == "String") {
    pi.SetValue(t, Convert.ToString(value), null);
    } else if (pi.PropertyType.Name == "Boolean") {
    pi.SetValue(t, Convert.ToBoolean(value), null);
    } else if (value != DBNull.Value) {
    pi.SetValue(t, value, null);
    }
    }
    }
    ts.Add(t);
    }
    return ts;
    }
    }



    public static void SetProperties<T>(this T source, HttpContext context) {

    var properties = typeof(T).GetProperties(BindingFlags.Instance | BindingFlags.Public);
    var values = HttpContext.Current.Request.QueryString;
    foreach (var prop in properties) {
    if (values.AllKeys.Contains(prop.Name)) {
    var propertyValue = values[prop.Name];
    //prop.SetValue(source, propertyValue);

    if (!prop.PropertyType.IsGenericType) {
    prop.SetValue(source, string.IsNullOrEmpty(propertyValue) ? null : Convert.ChangeType(propertyValue, prop.PropertyType));
    } else {
    Type genericTypeDefinition = prop.PropertyType.GetGenericTypeDefinition();
    if (genericTypeDefinition == typeof(Nullable<>)) {
    prop.SetValue(source, string.IsNullOrEmpty(propertyValue) ? null : Convert.ChangeType(propertyValue, Nullable.GetUnderlyingType(prop.PropertyType)));
    }
    }
    }
    }

    
    }
    mode.SetProperties(HttpContext.Current);

    Dictionary<string, string> dict = HttpContext.Current.Request.QueryString.Keys.Cast<string>()
    .ToDictionary(k => k, v => HttpContext.Current.Request.QueryString[v]);

  • 相关阅读:
    查找oracle数据文件、表空间的位置
    select into 给多变量赋值
    关于Union 中 ORA-12704:字符集不匹配问题的解决
    weblogic线程阻塞性能调优(图解)
    window系统无法访问局域网内文件共享的问题
    查看oracle的sql语句历史记录和锁表的情况
    <c:forEach>标签的使用 JSTL
    CAS服务下单点登录(服务端与客户端)
    cas 配置数据源 , 解决CAS 不支持你提供的凭证 .
    信号量通俗释义
  • 原文地址:https://www.cnblogs.com/zwei1121/p/8391464.html
Copyright © 2011-2022 走看看