ASP.NET中的cookie的应用,对应多个值的情况 2008-08-11 22:29
设置Cookie
protected void Page_Load(object sender, EventArgs e)
{
//声明一个HttpCookie的引用
HttpCookie cookie = null;
//统计访问的次数
int count = 0;
//判断是页面加传
if (!Page.IsPostBack)
{
//读取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.Write(userInfo.UserName + "欢迎您");
}
this.lblLeaveTime.Text = DateTime.Now.ToString();
}
}
//获取客户名为"Login"的cookie的值
if (Request.Cookies["Login"] != null)
{
//对应多个值的情况
string loginName = Request.Cookies["Login"]["LoginName"].ToString();
if (loginName != null)
{
Response.Write("用户名" + loginName);
}
string time = Request.Cookies["Login"]["dateTime"].ToString();
if (time != null)
{
Response.Write("上传时间" + time);
}
string count = Request.Cookies["Login"]["count"].ToString();
if (count != null)
{
Response.Write(" 访问次数" + count);
}
}