实现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; } }

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); }
下面是存储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); }
以上只是实现一个cookie类。真正在程序中,我们怎样去写cookie呢?也就是说如何使用。你可以写每一个cookie写成一个property,如下:
你可以写成任一个想实现的cookie。以上只是简单写2个属性,一个方法。
在网页中,就可以轻松使用:
赋值:
InsusBase.SystemLoginOk = true;
InsusBase.SystemId = "Key001";
获取值:
Response.Write(InsusBase.SystemLoginOk);
Response.Write(InsusBase.SystemId);
标签:
Cookies
, HttpResponse
, HttpRequest
, HttpContext
, Expires
, Dictionary
, NameValueCollection
, HttpCookie
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
2015-10-12 实现多表关联来方便你的SELECT查询功能
2013-10-12 MVC用非Entity Framework将数据显示于视图(二)
2011-10-12 frameset框架中frame页面间传递参数