• 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]);

  • 相关阅读:
    【扩展】1. PHP 大括号{} 的使用
    preg_replace 中修正符 e 的解析
    terminal 修改终端显示的名字
    find 命令详解
    OSI 7层结构 粗认识
    vi 全解析
    awk 学习笔记
    scp 复制远程文件 文件带空格 处理
    更新博客地址啦!!!
    ubuntu16.04安装NVIDIA驱动遇到的问题
  • 原文地址:https://www.cnblogs.com/zwei1121/p/8391464.html
Copyright © 2020-2023  润新知