Cookie
的使用
通过创建 HttpCookie 对象的实例编写 Cookie
1.
创建
HttpCookie
类型的对象并为它分配名称。
2.
为
Cookie
的子项赋值并设置所有
Cookie
属性。
3.
将该
Cookie
添加到
Cookies
集合中。
该实例表示一个名为
User
的
Cookie
。
HttpCookie myCookie = new HttpCookie("
User
");
myCookie["Font"] = "Arial";
myCookie["Color"] = "Blue";
myCookie.Expires = DateTime.Now.AddDays(1d);
Response.Cookies.Add(myCookie);//
添加Cookies
|
通过为 Cookies 集合设置 Cookie 属性编写 Cookie
在要编写
Cookie
的
ASP.NET
页中,请在
Cookies
集合中给
Cookie
赋予属性。
该实例表示一个名为
User
的
Cookie
,并设置
Font
和
Color
子项的值。它还将过期时间设置为明天。
Response.Cookies["
User
"]["Font"] = "Arial";
Response.Cookies["
User
"]["Color"] = "Blue";
Response.Cookies["
User
"].Expires = DateTime.Now.AddDays(1d);
|
读取 Cookie
1.
使用
Cookie
名作为键从
Cookies
集合中读取字符串。
2.Cookie
中的所有值都作为
String
类型存储
下面的示例读取名为
User
的
Cookie
,然后读取名为
Font
的子键的值。
if (Request.Cookies["
User
"] != null)
{
string userSettings;
if (Request.Cookies["
User
"]["Font"] != null)
{ userSettings = Request.Cookies["
User
"]["Font"]; }
}
|
向 Cookie 分配已过去的到期日期
1.
确定
Cookie
是否存在,如果存在则创建同名的新
Cookie
。
2.
将
Cookie
的到期日期设置为过去的某一时间。
3.
将
Cookie
添加到
Cookies
集合对象。
下面的代码示例演示如何为
Cookie
设置已过去的到期日期。
if (Request.Cookies["
User
"] != null)
{
HttpCookie myCookie = new HttpCookie("
User
");
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
}
|
不能直接删除用户计算机中的 Cookie。但是,可以通过将 Cookie 的到期日期设置为过去的日期,让用户的浏览器来删除 Cookie。当用户下一次向设置该 Cookie 的域或路径内的页发出请求时,浏览器将确定该 Cookie 已到期并将其移除。
在读取特定 Cookie 值时,请测试该 Cookie 是否存在以及它是否具有值,否则将发生异常。
从集合中移除的 Cookie 名称:示例
MyCookieCollection.Remove(MyCookie);
|
从集合中移除具有指定名称的 Cookie。
Cookie
数组:示例
HttpCookie[] myCookie = new HttpCookie[6];
myCookie[0] = new HttpCookie("Top");
myCookie[0]["productId"] = productId.ToString();
最近浏览功能实现:
//
新建一个cookie数组
HttpCookie[] myCookie;
if (Request.Cookies[ " Top " ] == null )
... {
//创建一个长度为6的数组
myCookie = new HttpCookie[6];
for (int i = 0; i < 6; i++)
...{
//定义cookie子键名称
string cookieName = "Top" + i.ToString();
//定义cookie父键名称
myCookie[i] = new HttpCookie("Top");
//添加cookie
Response.Cookies["Top"][cookieName] = ViewState["productId"].ToString();
//Response.Cookies["Top"].Expires = DateTime.Now.AddDays(7d);
}
}
else
... {
myCookie = new HttpCookie[6];
for (int i = 0; i < myCookie.Length; i++)
...{
string cookieName = "Top" + i.ToString();
string nextName = "Top" + Convert.ToString((i + 1));
myCookie[i] = new HttpCookie("Top");
//读取出全部cookie
if (Request.Cookies["Top"] != null)
...{
if (Request.Cookies["Top"][cookieName] != null)
...{
myCookie[i][cookieName] = Request.Cookies["Top"][cookieName].ToString();
}
if (myCookie[i][cookieName] == ViewState["productId"].ToString())
...{
return;
}
}
}
for (int i = 0; i < myCookie.Length; i++)
...{
string cookieName = "Top" + i.ToString();
string nextName = "Top" + Convert.ToString((i + 1));
//如果里面有相同的值,则返回;
//if (myCookie[i][cookieName] == Convert.ToInt32(ViewState["productId"].ToString()))
//{
//}
//如果cookie长度小于6;则添加cookie
if (myCookie.Length < 6)
...{
Response.Cookies["Top"][cookieName] = ViewState["productId"].ToString();
}
//如果cookie长度为6,则前推一位,将新的cookie赋予最后一位;
if (myCookie.Length == 6)
...{
if (i < myCookie.Length - 1)
...{
string cookname = Request.Cookies["Top"][nextName];
Response.Cookies["Top"][cookieName] = cookname;
}
else
...{
Response.Cookies["Top"][cookieName] = ViewState["productId"].ToString();
}
}
}
//设置cookie的有效期
Response.Cookies["Top"].Expires = DateTime.Now.AddDays(1d);
HttpCookie[] myCookie;
if (Request.Cookies[ " Top " ] == null )
... {
//创建一个长度为6的数组
myCookie = new HttpCookie[6];
for (int i = 0; i < 6; i++)
...{
//定义cookie子键名称
string cookieName = "Top" + i.ToString();
//定义cookie父键名称
myCookie[i] = new HttpCookie("Top");
//添加cookie
Response.Cookies["Top"][cookieName] = ViewState["productId"].ToString();
//Response.Cookies["Top"].Expires = DateTime.Now.AddDays(7d);
}
}
else
... {
myCookie = new HttpCookie[6];
for (int i = 0; i < myCookie.Length; i++)
...{
string cookieName = "Top" + i.ToString();
string nextName = "Top" + Convert.ToString((i + 1));
myCookie[i] = new HttpCookie("Top");
//读取出全部cookie
if (Request.Cookies["Top"] != null)
...{
if (Request.Cookies["Top"][cookieName] != null)
...{
myCookie[i][cookieName] = Request.Cookies["Top"][cookieName].ToString();
}
if (myCookie[i][cookieName] == ViewState["productId"].ToString())
...{
return;
}
}
}
for (int i = 0; i < myCookie.Length; i++)
...{
string cookieName = "Top" + i.ToString();
string nextName = "Top" + Convert.ToString((i + 1));
//如果里面有相同的值,则返回;
//if (myCookie[i][cookieName] == Convert.ToInt32(ViewState["productId"].ToString()))
//{
//}
//如果cookie长度小于6;则添加cookie
if (myCookie.Length < 6)
...{
Response.Cookies["Top"][cookieName] = ViewState["productId"].ToString();
}
//如果cookie长度为6,则前推一位,将新的cookie赋予最后一位;
if (myCookie.Length == 6)
...{
if (i < myCookie.Length - 1)
...{
string cookname = Request.Cookies["Top"][nextName];
Response.Cookies["Top"][cookieName] = cookname;
}
else
...{
Response.Cookies["Top"][cookieName] = ViewState["productId"].ToString();
}
}
}
//设置cookie的有效期
Response.Cookies["Top"].Expires = DateTime.Now.AddDays(1d);