• C# 对JS编码/解码进行转换


     public static class Extension
        {
            #region [编码/解码统一转换]
            /// <summary>
            /// 
            /// </summary>
            /// <param name="str"></param>
            /// <param name="isEscape">True为Encode;False为Decode</param>
            /// <returns></returns>
            public static string JSCodingString(this string str, bool isEscape = false)
            {
                if (isEscape)
                    return Microsoft.JScript.GlobalObject.escape(str);
                else
                    return Microsoft.JScript.GlobalObject.unescape(str);
            }
    
            /// <summary>
            /// js编码解码
            /// </summary>
            /// <param name="lsto"></param>
            /// <param name="isEscape"></param>
            public static void JSCodingEntityList<T>(this List<T> lsto, bool isEscape = false)
            {
                foreach (object o in lsto)
                {
                    JSCodingEntity(o, isEscape);
                }
            }
    
            /// <summary>
            /// js编码解码
            /// </summary>
            /// <param name="o"></param>
            /// <param name="isEscape"></param>
            public static void JSCodingEntity<T>(this T o, bool isEscape = false)
            {
                object objValue;
                System.Reflection.PropertyInfo[] propertys = o.GetType().GetProperties();
                foreach (System.Reflection.PropertyInfo p in propertys)
                {
                    if (p.PropertyType == typeof(System.String))
                    {
                        objValue = p.GetValue(o, null);
                        if (objValue != null)
                        {
                            if (objValue.GetType() == typeof(System.String))
                            {
                                if (isEscape)
                                    p.SetValue(o, Microsoft.JScript.GlobalObject.escape(objValue.ToString()), null);
                                else
                                    p.SetValue(o, Microsoft.JScript.GlobalObject.unescape(objValue.ToString()), null);
                            }
                        }
                    }
                }
            }
    
            /// <summary>
            /// js编码解码
            /// </summary>
            /// <param name="o"></param>
            /// <param name="isEscape"></param>
            public static void JSCodingTable(this DataSet o, bool isEscape = false)
            {
                foreach (DataTable t in o.Tables)
                {
                    JSCodingEntity(t, isEscape);
                }
            }
    
            /// <summary>
            /// js编码解码
            /// </summary>
            /// <param name="o"></param>
            /// <param name="isEscape"></param>
            public static void JSCodingTable(this DataTable o, bool isEscape = false)
            {
                for (int j = 0; j < o.Columns.Count; j++)
                {
                    if (o.Columns[j].DataType == typeof(System.String))
                    {
                        for (int i = 0; i < o.Rows.Count; i++)
                        {
                            if (isEscape)
                                o.Rows[i][j] = Microsoft.JScript.GlobalObject.escape(o.Rows[i][j].ToString());
                            else
                                o.Rows[i][j] = Microsoft.JScript.GlobalObject.unescape(o.Rows[i][j].ToString());
                        }
                    }
                }
            } 
            #endregion
    
            #region [重构:将原有编码/解码采用独立的函数方式。]
            public static string ToJSEncodeString(this string str)
            {
                return Microsoft.JScript.GlobalObject.escape(str);
            }
    
            public static string ToJSDecodeString(this string str)
            {
                return Microsoft.JScript.GlobalObject.unescape(str);
            }
    
            public static void ToJSEncodeEntityList<T>(this List<T> lsto)
            {
                foreach (object o in lsto)
                {
                    ToJSEncodeEntity(o);
                }
            }
    
            public static void ToJSDecodeEntityList<T>(this List<T> lsto)
            {
                foreach (object o in lsto)
                {
                    ToJSDecodeEntity(o);
                }
            }
    
            public static void ToJSEncodeEntity<T>(this T o)
            {
                object objValue;
                System.Reflection.PropertyInfo[] propertys = o.GetType().GetProperties();
                foreach (System.Reflection.PropertyInfo p in propertys)
                {
                    if (p.PropertyType == typeof(System.String))
                    {
                        objValue = p.GetValue(o, null);
                        if (objValue != null)
                        {
                            if (objValue.GetType() == typeof(System.String))
                            {
                                p.SetValue(o, Microsoft.JScript.GlobalObject.escape(objValue.ToString()), null);
                            }
                        }
                    }
                }
            }
    
            public static void ToJSDecodeEntity<T>(this T o)
            {
                object objValue;
                System.Reflection.PropertyInfo[] propertys = o.GetType().GetProperties();
                foreach (System.Reflection.PropertyInfo p in propertys)
                {
                    if (p.PropertyType == typeof(System.String))
                    {
                        objValue = p.GetValue(o, null);
                        if (objValue != null)
                        {
                            if (objValue.GetType() == typeof(System.String))
                            {
                                p.SetValue(o, Microsoft.JScript.GlobalObject.unescape(objValue.ToString()), null);
                            }
                        }
                    }
                }
            }
    
            public static void ToJSEncodeTable(this DataSet o)
            {
                foreach (DataTable t in o.Tables)
                {
                    ToJSEncodeTable(t);
                }
            }
    
            public static void ToJSDecodeTable(this DataSet o)
            {
                foreach (DataTable t in o.Tables)
                {
                    ToJSDecodeTable(t);
                }
            }
    
            public static void ToJSEncodeTable(this DataTable o)
            {
                for (int j = 0; j < o.Columns.Count; j++)
                {
                    if (o.Columns[j].DataType == typeof(System.String))
                    {
                        for (int i = 0; i < o.Rows.Count; i++)
                        {
                            o.Rows[i][j] = Microsoft.JScript.GlobalObject.escape(o.Rows[i][j].ToString());
                        }
                    }
                }
            }
    
            public static void ToJSDecodeTable(this DataTable o)
            {
                for (int j = 0; j < o.Columns.Count; j++)
                {
                    if (o.Columns[j].DataType == typeof(System.String))
                    {
                        for (int i = 0; i < o.Rows.Count; i++)
                        {
                            o.Rows[i][j] = Microsoft.JScript.GlobalObject.unescape(o.Rows[i][j].ToString());
                        }
                    }
                }
            }
    
            #endregion
        }
    

      

  • 相关阅读:
    Ubuntu包管理命令 dpkg、apt和aptitude
    Linux curses库使用
    VC皮肤库SkinSharp 1.0.6.6的使用
    HOG(方向梯度直方图)
    2014年国外发布的中国内地大学排名18强名单
    sql语句中BEGIN TRAN...COMMIT TRAN
    搜索框中“请输入搜索keyword”
    IOS基于新浪微博开放平台微博APP
    php字符串标点等字符截取不乱吗 封装方法
    谈一谈struts2和springmvc的拦截器
  • 原文地址:https://www.cnblogs.com/51net/p/3800196.html
Copyright © 2020-2023  润新知