让Cookies操作变得向Session一样简单
很多开发者都会觉得使用Session比使用Cookies简单,不需要实例化,直接可以使用索引器;那么接下来我们将让Cookies操作达到Session一样的操作简单
建立类:
C# 代码
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace testcookie
...{
public class CCookies
...{
static CCookies instance = null;
static readonly object padlock = new object();
private CCookies()
...{
}
public static CCookies Cookie ...{
get ...{
lock (padlock) ...{
if (instance == null)
instance = new CCookies();
return instance;
}
}
}
public string this[string key]
...{
get
...{
return GetValue(key);
}
set
...{
Add(key, value);
}
}
/// <summary>
/// 添加Cookie 项
/// </summary>
/// <param name="key">键名</param>
/// <param name="value">键值</param>
public void Add(string key, string value)
...{
HttpCookie cookie = HttpContext.Current.Request.Cookies["User"];
if (cookie == null)
...{
cookie = new HttpCookie("User");
cookie.Expires = DateTime.Now.AddDays(1);
}
cookie.Values[key]= value;
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
}
/// <summary>
/// 获取Cookie值
/// </summary>
/// <param name="key">键名</param>
/// <returns></returns>
public string GetValue(string key) ...{
HttpCookie cookie = (HttpCookie)System.Web.HttpContext.Current.Request.Cookies["User"];
if (cookie != null)
...{
return cookie.Values[key];
}
return string.Empty;
}
/// <summary>
/// 移除Cookie值
/// </summary>
/// <param name="key">键名</param>
public void Remove(string key)
...{
HttpCookie cookie = HttpContext.Current.Request.Cookies["User"];
if (cookie != null)
...{
cookie.Values.Remove(key);
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
}
}
/// <summary>
/// 清除 Cookie
/// </summary>
public void Clear() ...{
HttpCookie cookie = (HttpCookie)System.Web.HttpContext.Current.Request.Cookies["User"];
if (cookie != null)
...{
cookie.Expires = System.DateTime.Now.AddDays(-2);
cookie.Values.Clear();
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
}
}
}
}
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace testcookie
...{
public class CCookies
...{
static CCookies instance = null;
static readonly object padlock = new object();
private CCookies()
...{
}
public static CCookies Cookie ...{
get ...{
lock (padlock) ...{
if (instance == null)
instance = new CCookies();
return instance;
}
}
}
public string this[string key]
...{
get
...{
return GetValue(key);
}
set
...{
Add(key, value);
}
}
/// <summary>
/// 添加Cookie 项
/// </summary>
/// <param name="key">键名</param>
/// <param name="value">键值</param>
public void Add(string key, string value)
...{
HttpCookie cookie = HttpContext.Current.Request.Cookies["User"];
if (cookie == null)
...{
cookie = new HttpCookie("User");
cookie.Expires = DateTime.Now.AddDays(1);
}
cookie.Values[key]= value;
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
}
/// <summary>
/// 获取Cookie值
/// </summary>
/// <param name="key">键名</param>
/// <returns></returns>
public string GetValue(string key) ...{
HttpCookie cookie = (HttpCookie)System.Web.HttpContext.Current.Request.Cookies["User"];
if (cookie != null)
...{
return cookie.Values[key];
}
return string.Empty;
}
/// <summary>
/// 移除Cookie值
/// </summary>
/// <param name="key">键名</param>
public void Remove(string key)
...{
HttpCookie cookie = HttpContext.Current.Request.Cookies["User"];
if (cookie != null)
...{
cookie.Values.Remove(key);
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
}
}
/// <summary>
/// 清除 Cookie
/// </summary>
public void Clear() ...{
HttpCookie cookie = (HttpCookie)System.Web.HttpContext.Current.Request.Cookies["User"];
if (cookie != null)
...{
cookie.Expires = System.DateTime.Now.AddDays(-2);
cookie.Values.Clear();
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
}
}
}
}
使用实例:
C# 代码
testcookie.CCookies.Cookie.Add("A", "a");
testcookie.CCookies.Cookie["B"] = "b";
testcookie.CCookies.Cookie["C"] = "c";
Response.Write(testcookie.CCookies.Cookie["A"]);
Response.Write(testcookie.CCookies.Cookie.GetValue("B"));
Response.Write(testcookie.CCookies.Cookie["C"] + "<br>");
testcookie.CCookies.Cookie.Clear();
Response.Write(testcookie.CCookies.Cookie["A"]);
Response.Write(testcookie.CCookies.Cookie.GetValue("B"));
Response.Write(testcookie.CCookies.Cookie["C"]);
testcookie.CCookies.Cookie["B"] = "b";
testcookie.CCookies.Cookie["C"] = "c";
Response.Write(testcookie.CCookies.Cookie["A"]);
Response.Write(testcookie.CCookies.Cookie.GetValue("B"));
Response.Write(testcookie.CCookies.Cookie["C"] + "<br>");
testcookie.CCookies.Cookie.Clear();
Response.Write(testcookie.CCookies.Cookie["A"]);
Response.Write(testcookie.CCookies.Cookie.GetValue("B"));
Response.Write(testcookie.CCookies.Cookie["C"]);
现在是不是操作很简单了呢?
当然,上面的代码还只能完成初步的工作,向cookies的domain,以及有效期都不能灵活设置,我们可以根据自己的项目去修改。