您的位置:首页 > 编程语言 > ASP

ASP.NET中的cookie的应用,对应多个值的情

2010-12-04 00:32 274 查看
通过cookie = Request.Cookies["Login"];获得名为Login的客户端Cookie集合对象cookie,如果不存在就添加,如果存在就设置新值并输出。通过

cookie.Values["键1"] =新值1;

cookie.Values["键2"] =新值2;

这样的形式来添加,修改也一样。

添加Cookie通过Response.Cookies.Add(cookie);形式

更新Cookie通过Response.Cookies.Set(cookie);形式



using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
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;
using System.Xml.Linq;

namespace TestWebApp
{
public class UserInfo
{
public string UserName = "jrain";
public string PassWord = "1234";
}
public partial class WebForm4 : System.Web.UI.Page
{
//设置Cookie
protected void Page_Load(object sender, EventArgs e)
{
//声明一个HttpCookie的引用
HttpCookie cookie = null;
//统计访问的次数
int count = 0;

//判断是页面加传
if (!Page.IsPostBack)
{
//判断电脑是否存在Cookies并输出
if (Request.Cookies["Login"] != null)
{
Response.Write("用户名:" + Request.Cookies["Login"].Values["loginName"].ToString() + "<br/>");
Response.Write("登陆时间:" + Request.Cookies["Login"].Values["dateTime"].ToString() + "<br/>");
Response.Write("访问次数:" + Request.Cookies["Login"].Values["count"].ToString() + "<br/>");

//或以下形式输出
Response.Write("用户名:" + Request.Cookies["Login"]["loginName"].ToString() + "<br/>");
Response.Write("登陆时间:" + Request.Cookies["Login"]["dateTime"].ToString() + "<br/>");
Response.Write("访问次数:" + Request.Cookies["Login"]["count"].ToString() + "<br/>");
}

//纯粹为了测试,把一个UserInfo对象存放到Session中
Session["userInfo"] = new UserInfo();

//读取Session范围的"userInfo",因为我们存的是UserInfo类型的,所以我们可以直接转换成这个类型的
UserInfo userInfo = Session["userInfo"] as UserInfo;
if (userInfo == null)
{
Response.Redirect("Login.aspx");
}
else if (userInfo.UserName != "jrain" || userInfo.PassWord != "1234")
{
Response.Redirect("Login.aspx");
}
else
{
//从客户端读取名为"Login"的cookie,
cookie = Request.Cookies["Login"];

//如果不存在的话,也就是第一次写这个cookie
if (cookie == null)
{
//如果客户端没有这个cookie,我们要先实例化这个名为Login的cookie,
cookie = new HttpCookie("Login");
//访问次数加加
count++;

//注意Cookie中只能添加string类型的值

//设置cookie的值,当有多个值的时候,我们用cookie.Values["loginName"]的方式
cookie.Values["loginName"] = userInfo.UserName;
cookie.Values["dateTime"] = DateTime.Now.ToString();
cookie.Values["count"] = count.ToString();

/*设置cookie的过期时间,注意,
这里要想把数据保存到硬盘上,一定要设置cookie的过期时间,否则,只会存放在内存中.
Expires 属性,这个属性设置此Cookie 的过期日期和时间。如果没有设置 Cookie 的有效期(默认设置),
也可以创建 Cookie,但它不会保存到用户的硬盘上,而是会成为用户会话信息的一部分,
关闭浏览器或会话超时这个Cookie即会消失,这种Cookie称作非永久性的 Cookie。
存放SessionID的Cookie就是这样的一种Cookie,它不存放在硬盘上,只存在内存之中。 */
//cookie.Expires的值为DateTime的枚举
cookie.Expires = DateTime.Now.AddDays(30);
//写cookie到客户端
Response.Cookies.Add(cookie);
}
else //当客户端有当前查找的cookie时
{
//读取访问次数
count = int.Parse(cookie.Values["count"].ToString());
//次数加加
count++;
//读取登录名
cookie.Values["loginName"] = userInfo.UserName;
//读取登录时间
cookie.Values["dateTime"] = DateTime.Now.ToString();
cookie.Values["count"] = count.ToString();
cookie.Expires = DateTime.Now.AddDays(30);

//更新cookie集合中现有的cookie值
Response.Cookies.Set(cookie);
//Response.Cookies.Add(cookie);
}



Response.Write(userInfo.UserName + "欢迎您");
}
}
}
}
}


客户端产生的Cooki为以,Cookie名键1=值1&键2=值2....的形式保存,如下:

Login
loginName=jrain&dateTime=2010-12-4 0:19:59&count=4
localhost/
1536
3868057984
30124696
4001619344
30118661
*

改自:http://blog.163.com/pengpeng_614/blog/static/177071692008711102916339/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: