• 实现Cookie集合


    以前Insus.NET有在博客上有写过一篇《在程序中使用Cookie集合http://www.cnblogs.com/insus/archive/2011/05/25/2055531.html

    昨天Insus.NET有在命名用这方法的专项中,进行改写与优化。

    把Cookie类抽出并独立起来。

     private static HttpResponse Response
            {
                get
                {
                    return HttpContext.Current.Response;
                }
            }
    
            private static HttpRequest Request
            {
                get
                {
                    return HttpContext.Current.Request;
                }
            }
    Source Code

    这个cookie集合,当然存取单独cookie也行才对:

     public static string GetCookie(string cookieName)
            {
                return Request.Cookies[cookieName] == null ? "" : Request.Cookies[cookieName].Value;
            }
    
            public static void SetCookie(string cookieName, string value)
            {
                Response.Cookies[cookieName].Value = value;
            }
    
            public static void RemoveCookie(string cookieName)
            {
                HttpCookie cookie = Request.Cookies[cookieName];
                cookie.Expires = DateTime.Now.AddTicks(-1);
                Response.Cookies.Add(cookie);
            }
    Source Code

    下面是存储cookie集合,即是说单个cookie中,能够存储多个键值:



      private static Dictionary<string, object> GetCookies(string cookieName)
            {
                Dictionary<string, object> dic = new Dictionary<string, object>();
    
                if (Request.Cookies[cookieName] != null)
                {
                    HttpCookie cookie = Request.Cookies[cookieName];
                    if (cookie != null)
                    {
                        NameValueCollection nvc = cookie.Values;
                        foreach (string key in nvc.AllKeys)
                        {
                            dic.Add(key, cookie[key]);
                        }
                    }
                }
                return dic;
            }
    
            public static object GetCookies(string cookieName, string keyName)
            {
                Dictionary<string, object> dic = GetCookies(cookieName);
                if (dic.Count > 0 && dic.ContainsKey(keyName))
                {
                    return dic[keyName];
                }
    
                return null;
            }
    
            public static void SetCookies(string cookieName, Dictionary<string, object> dic)
            {
                HttpCookie cookie = Request.Cookies[cookieName] == null ? new HttpCookie(cookieName) : Request.Cookies[cookieName];
                foreach (KeyValuePair<string, object> val in dic)
                {
                    cookie[val.Key] = val.Value.ToString();
                }
                Response.Cookies.Add(cookie);
            }
    
            public static void RemoveCookies(string cookieName)
            {
                HttpCookie cookie = Request.Cookies[cookieName];
                cookie.Expires = DateTime.Now.AddTicks(-1);
                Response.AppendCookie(cookie);
            }
    
            public static void RemoveCookies(string cookieName, string keyName)
            {
                HttpCookie cookie = Request.Cookies[cookieName];
                if (cookie != null)
                    cookie.Values.Remove(keyName);
                Response.AppendCookie(cookie);
            }
    Source Code



    以上只是实现一个cookie类。真正在程序中,我们怎样去写cookie呢?也就是说如何使用。你可以写每一个cookie写成一个property,如下:



    你可以写成任一个想实现的cookie。以上只是简单写2个属性,一个方法。

    在网页中,就可以轻松使用:
    赋值:
     InsusBase.SystemLoginOk = true;
    InsusBase.SystemId = "Key001";


    获取值:
     Response.Write(InsusBase.SystemLoginOk);
    Response.Write(InsusBase.SystemId);



  • 相关阅读:
    Centos 7 zabbix 实战应用
    Centos7 Zabbix添加主机、图形、触发器
    Centos7 Zabbix监控部署
    Centos7 Ntp 时间服务器
    Linux 150命令之查看文件及内容处理命令 cat tac less head tail cut
    Kickstart 安装centos7
    Centos7与Centos6的区别
    Linux 150命令之 文件和目录操作命令 chattr lsattr find
    Linux 发展史与vm安装linux centos 6.9
    Linux介绍
  • 原文地址:https://www.cnblogs.com/insus/p/7654423.html
Copyright © 2020-2023  润新知