zoukankan      html  css  js  c++  java
  • 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
        }
    

      

  • 相关阅读:
    一文总结十大经典排序算法(思维导图 + 动图演示 + 代码实现 C/C++/Python + 致命吐槽)
    VulnHub——Kioptrix Level 2
    史上最全Redis面试题(2020最新版)
    js 根据秒数获取多少小时,多少分钟,多少秒
    RabbitMQ的死信队列
    女朋友也能看懂的多线程同步
    RabbitMQ的备份交换器
    BI Publisher(rtf)模板开发语法大全
    修改CUSTOM.PLL文件调用客户化FORM&修改标准FORM
    EBS客户化迁移SQL
  • 原文地址:https://www.cnblogs.com/51net/p/3800196.html
Copyright © 2011-2022 走看看