zoukankan      html  css  js  c++  java
  • 实现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);



  • 相关阅读:
    数据移除的循环
    C#窗体多语言切换(简繁)
    C# 文字转换最简单的方法
    使用CodeDOM动态编译一个字符串表达式
    C#设置WebBrowser默认浏览器
    Image和字节数组互转
    苹果手机的SB系列(8)为什么没有短信全部删除?
    循环删除外键约束
    腾讯云COS自定义域名,支持https,CDN,私有访问
    腾讯云COS请求签名C#版
  • 原文地址:https://www.cnblogs.com/insus/p/7654423.html
Copyright © 2011-2022 走看看