.Net以其强大的功能而著称。所以在.Net中提供了许多针对Cookie的类,可以很方便地完成对Cookie的各类操作。在.Net中有一个类HttpCookie,这个类中保存了Cookie的全部信息,包括Cookie名称、Cookie值、有效期等。我们在使用时先新建一个HttpCookie的对象,然后用Response.Cookies下的方法来操作这个对象就可以了。
声明一个HttpCookie对象的方法为:HttpCookie cookiename = new HttpCookie(Cookie的名称, Cookie的值);其中,cookiename是对象名。然后,我们就可以为cookiename的各个属性赋值。
当向系统中添加该Cookie时只要用Response.AppendCookie(cookiename);就可以了,或者用Response.Cookies.Add(cookiename);。读取Cookie时用Response.Cookies.Get(Cookie名称);删除Cookie时用Response.Cookies.Remove(Cookie名称);,但我试了一下,删不掉。所以还是用以前的思路,把该Cookie的有效期设置为过时就可以了,方法如下:
HttpCookie ckUserInfo = Request.Cookies[txtUserName.Text.Trim()];
ckUserInfo.Expires = DateTime.Today.AddDays(-1);
Response.Cookies.Set(ckUserInfo);
以上操作就可以完成Cookie的基本操作。因为我还想实现当用户输完用户名后把焦点从用户名框转移到密码框时自动在密码框中输出该用户对应的密码,所以还得增加一个javascript处理函数showpassword()。这个函数完全和上面DHTML中的showpassword()一样。所以,在.Net中完全可以使用以前DHTML中的方法。我们只要在页面导入时为用户名框添加一个onblur属性即可。Login.aspx的代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="login.aspx.cs" Inherits="login" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<script>
function GetCookie (name)
{
var arg = name + "=";
var alen = arg.length;
var clen = window.document.cookie.length;
var i = 0;
while (i < clen)
{
var j = i + alen;
if (window.document.cookie.substring(i, j) == arg) return getCookieVal (j);
i = window.document.cookie.indexOf(" ", i) + 1;
if (i == 0)
break;
}
return null;
}
function getCookieVal (offset)
{
var endstr = window.document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = window.document.cookie.length;
return unescape(window.document.cookie.substring(offset, endstr));
}
function showpassword()
{
var p=GetCookie(document.all.txtUserName.value);
if(p!=null)
document.all.txtPassword.value= p;
}
</script>
<body>
<form ].ToString();
UserCookie.Expires=DateTime.Now.AddDays(1);//这里设置要保存多长时间.
Response.Cookies.Add(UserCookie);
读取的时候
HttpCookie cookie=Request.Cookies["userName"];
string name=cookie.Values["name"];
清除cookie
HttpCookie cookie=Request.Cookies["userName"];
if(cookie!=null)
{
cookie.Expires=DateTime.Now.AddDays(-2);
Response.Cookies.Set(cookie);
}