ASP.NET cookie 操作详解cookie 写入、读取、修改、删除

本文详细介绍了ASP.NET中Cookie的基本操作方法,包括如何创建、读取、修改和删除Cookie,并提供了具体的代码示例。

ASP.NET cookie 操作详解cookie 写入、读取、修改、删除

一、操作详解:

    //写入
    protected void Button2_Click(object sender, EventArgs e)
     {
         HttpCookie cookie=newHttpCookie("MyCook");//初使化并设置Cookie的名称
         DateTime dt=DateTime.Now;
         TimeSpan ts = new TimeSpan(0,0, 1,0,0);//过期时间为1分钟
         cookie.Expires = dt.Add(ts);//设置过期时间
         cookie.Values.Add("userid", "userid_value");
         cookie.Values.Add("userid2","userid2_value2");
         Response.AppendCookie(cookie);
         //输出该Cookie的所有内容
         //Response.Write(cookie.Value); //输出为:userid=userid_value&userid2=userid2_value2
     }

    //读取
    protected void Button1_Click(object sender, EventArgs e)
     {

       // HttpCookie cokie =new HttpCookie("MyCook");//初使化
        if(Request.Cookies["MyCook"]!=null)
         {
           //Response.Write("Cookie中键值为userid的值:" +Request.Cookies["MyCook"]["userid"]);//整行
           //Response.Write("Cookie中键值为userid2的值" + Request.Cookies["MyCook"]["userid2"]);
            Response.Write(Request.Cookies["MyCook"].Value);//输出全部的值
         }
     }

    //修改Cookie
    protected void Button3_Click(object sender, EventArgs e)
     {
        //获取客户端的Cookie对象
         HttpCookie cok =Request.Cookies["MyCook"];
       
        if (cok != null)
         {
         //修改Cookie的两种方法
            cok.Values["userid"] = "alter-value";
            cok.Values.Set("userid", "alter-value");

          //往Cookie里加入新的内容
             cok.Values.Set("newid", "newValue");
             Response.AppendCookie(cok);
         }

     
     }
    //删除Cookie
    protected void Button4_Click(object sender, EventArgs e)
     {

         HttpCookiecok = Request.Cookies["MyCook"];
        if (cok != null)
         {
            if(!CheckBox1.Checked)
             {
                cok.Values.Remove("userid");//移除键值为userid的值
             }
            else
             {
                TimeSpan ts = new TimeSpan(-1, 0, 0, 0);
                cok.Expires = DateTime.Now.Add(ts);//删除整个Cookie,只要把过期时间设置为现在
             }
            Response.AppendCookie(cok);
         }
     }
二、分析:
   以前写程序都没去关注Cookie的应用,因为ASP.NET在客户端保存数据的方式比较多,且以前写的程序都没有用到Cookie,所以就没去了解,今天有个程序总是用Cookie出错。现在在网上查查Cookie的常用方法。
Cookie的用法也和ASP中差不多。比如我们建立一个名为user,值为111的cookie

方法一、

// 写入:
HttpCookie cookie = new HttpCookie("user");
cookie.Value = "111";
Response.AppendCookie(cookie);
// 我们取出Cookie值也很简单
HttpCookie cookie = Request.Cookies["user"];
cookieValue = cookie.Value;
// 有时候我们想在一个Cookie中储存多个信息,那也没有问题。比如我们在名为user的cookie下加多个信息
HttpCookie cookie = new HttpCookie("user");
cookie.Values.Add("name","222");
cookie.Values.Add("pwd","333");
cookie.Values.Add("member","admin");
Response.AppendCookie(cookie);
// 从客户端获取取信息也一样简单
HttpCookie cookie = Request.Cookies["user"];
value1 = cookies.Values["name"];
value2 = cookies.Values["pwd"];

方法二、

写入:
HttpCookie cookie = new HttpCookie("id_admin_");
cookie.Value = model.id_admin_.ToString();
//cookie.Domain = ".sosuo8.com";
HttpContext.Current.Response.Cookies.Add(cookie);
cookie = new HttpCookie("name_admin_");
//可能是中文字符,必须经过编码
cookie.Value = HttpUtility.UrlEncode(model.name_admin_);
//cookie.Domain = ".sosuo8.com";
HttpContext.Current.Response.Cookies.Add(cookie);
cookie = new HttpCookie("guid");
cookie.Value = Guid.NewGuid().ToString();
//cookie.Domain = ".sosuo8.com";
HttpContext.Current.Response.Cookies.Add(cookie);


读取:
HttpContext.Current.Request.Cookies["guid"].Value

asp.net清空cookie 清空单个
Response.Cookies["admin"].Expires = DateTime.Now.AddDays(-1);

asp.net清空cookie 清空所有
Request.Cookies.Clear()这个方法并不是删除Cookie 

删除 Cookie(即从用户的硬盘中物理移除 Cookie)是修改 Cookie 的一种形式。
由于 Cookie 在用户的计算机中,因此无法将其直接移除。
但是,可以让浏览器来为您删除 Cookie。
该技术是创建一个与要删除的 Cookie 同名的新Cookie,
并将该 Cookie 的到期日期设置为早于当前日期的某个日期。
当浏览器检查 Cookie 的到期日期时,浏览器便会丢弃这个现已过期的 Cookie。
下面的代码示例演示删除应用程序中所有可用 Cookie 的一种方法:

代码如下:

HttpCookie aCookie;
string cookieName;
int limit = Request.Cookies.Count;
for (int i = 0; i < limit; i++)
{
    cookieName = Request.Cookies[i].Name;
    aCookie = new HttpCookie(cookieName);
    aCookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(aCookie);
}

Cookie封装类示例代码

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;


public class Cookie
{
    /// <summary>
    /// Cookies赋值
    /// </summary>
    /// <param name="strName">主键</param>
    /// <param name="strValue">键值</param>
    /// <param name="strDay">有效天数</param>
    /// <returns></returns>
    public bool setCookie(string strName, string strValue, int strDay)
    {
        try
        {
            HttpCookie Cookie = new HttpCookie(strName);
            //Cookie.Domain = ".xxx.com";//当要跨域名访问的时候,给cookie指定域名即可,格式为.xxx.com
            Cookie.Expires = DateTime.Now.AddDays(strDay);
            Cookie.Value = strValue;
            System.Web.HttpContext.Current.Response.Cookies.Add(Cookie);
            return true;
        }
        catch
        {
            return false;
        }
    }

    /// <summary>
    /// 读取Cookies
    /// </summary>
    /// <param name="strName">主键</param>
    /// <returns></returns>

    public string getCookie(string strName)
    {
        HttpCookie Cookie = System.Web.HttpContext.Current.Request.Cookies[strName];
        if (Cookie != null)
        {
            return Cookie.Value.ToString();
        }
        else
        {
            return null;
        }
    }

    /// <summary>
    /// 删除Cookies
    /// </summary>
    /// <param name="strName">主键</param>
    /// <returns></returns>
    public bool delCookie(string strName)
    {
        try
        {
            HttpCookie Cookie = new HttpCookie(strName);
            //Cookie.Domain = ".xxx.com";//当要跨域名访问的时候,给cookie指定域名即可,格式为.xxx.com
            Cookie.Expires = DateTime.Now.AddDays(-1);
            System.Web.HttpContext.Current.Response.Cookies.Add(Cookie);
            return true;
        }
        catch
        {
            return false;
        }
    }
}

示例:

Cookie Cookie = new Cookie();
Cookie.setCookie("name", "aaa",1);//赋值
Cookie.getCookie("name");//取值
Cookie.delCookie("name");//删除

注意:当Cookie存中文出现乱码,则在存放时给中文编码,如Cookie.setCookie("name",Server.UrlEncode("aaa"),1),读取时解码即可

另外:只要不给cookie设置过期时间,cookie在浏览器关闭的时候自动失效

 

转自:http://hi.baidu.com/3k_xiong/item/de2d73d330203eecb3f777a1

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值