荆棘鸟

我颠覆整个世界只为扶正你的倒影
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

.net下使用cookies

Posted on 2007-11-01 09:06  荆棘鸟  阅读(704)  评论(0)    收藏  举报

设置cookie(如原先有则覆盖,没有则新生成一个)
Response.Cookies["iiiChinaDropDown"].Value=myDropDownList.SelectedIndex.ToString();
设置过期时间,不设定,默认情况是关闭本浏览器后该cookie丢失
Response.Cookies ["iiiChinaDropDown"].Expires=DateTime.MaxValue;

调用方法
TextBox1.Text=Request.Cookies ["iiiChinaDropDown"].Value


 

  二、C#如何写入Cookie:
  为了写入Cookie,他的步骤主要有三步,具体如下:
  
  首先就要创建一个HttpCookie对象,通过这个对象来构造一个Cookie,这个对象的名称就是以后产生的Cookie名称。具体如下代码:
  HttpCookie cookie = new HttpCookie ( 用户定义的Cookie名称 ) ;
  
  然后对创建的HttpCookie对象的 Value 属性分配一个字符串值, Value 的值就是后来产生的Cookie的值。具体代码如下:
  cookie.Value = 用户给Cookie赋值 ; 如果你想写入的Cookie数值不是一个简单的字符串,而是一个复杂的数据类型,我们知道这些数据类型是不能直接存贮到Cookie中的,因为Cookie中只能存贮字符串。但你可以通过一个变通的方法,就是把这个复杂的数据类型转换成多个字符串,然后把这多个字符串同时赋值给产生的Cookie值,这样Cookie中的内容就丰富了,以后利用Cookie完成的功能也强大了。这时你可能就会明白为什么当你浏览Web服务器,Web服务器会知道你什么时候曾经浏览过,并且曾经待过多长时间等信息了。因为这些信息已经存储到你第一次浏览页面时,Web服务器产生的Cookie中去了。下列代码是把多个字符串存储到Cookie的例子:
  cookie [ 姓名 ] = 王天;
  cookie [ 性别 ] = 男;
  cookie [ 年龄 ] = 26;
  
  Cookie有临时的,也有永远的。永久 Cookie 以文件形式存储在计算机上,关闭 Internet Explorer 时仍然保留在计算机上。再次访问该站点时,创建该 Cookie 的网站可以读取。在具体的编程时候,是在写入此Cookie的时候,设定Cookie的生命周期,具体如下代码:
  DateTime dtNow = DateTime . Now ;
  TimeSpan tsMinute = new TimeSpan ( 0 , 1 , 0 , 0 ) ;
  cookie . Expires = dtNow + tsMinute ;
  
  以上代码是设定产生的Cookie的生命期为 一个小时 ,你可以通过修改 TimeSpan 属性来设定产生Cookie的具体生命期。
  .最后调用 Response.Cookies 对象的 Add() 方法,加入此对象,这样就可以产生一个Cookie了。具体代码如下:
  Response . Cookies . Add ( cookie ) ;
  下列代码就是在 C#写入Cookie的完整代码(Write.aspx):
  <% @ language = C# %>
  <script runat = server >
  void WriteClicked ( Object Sender , EventArgs e )
  {
  //创建一个HttpCookie对象
  HttpCookie cookie = new HttpCookie ( NameField . Text ) ;
  //设定此cookies值
  cookie . Value = ValueField . Text ;
  //设定cookie的生命周期,在这里定义为一个小时
  DateTime dtNow = DateTime . Now ;
  TimeSpan tsMinute = new TimeSpan ( 0 , 1 , 0 , 0 ) ;
  cookie . Expires = dtNow + tsMinute ;
  cookie [ 姓名 ] = 王天 ;
  cookie [ 性别 ] = 男 ;
  cookie [ 年龄 ] = 26 ;
  //加入此cookie
  Response . Cookies . Add ( cookie ) ;
  Response . Write ( NameField . Text + Cookie创建完毕 <br > <hr > ) ;
  }
  </script >
  <html >
  <body >
  <h3 > 在 C#页面中创建cookie </h3 >
  此cookie的生命周期定义为一个小时
  <form runat=server>
  Cookie名称:<asp:textbox id = NameField runat = server /> <br >
  Cookie的值:<asp:textbox id = ValueField runat = server /> <br >
  <asp:button text = 创建Cookie onclick = WriteClicked runat = server /> <br >
  </form >
  </body >
  </html >
  当然上面的代码产生的Cookie在内容上面有点单调了。其实对于内容十分丰富的Cookie来说,他还有许多属性,充分的利用这些属性,才可以利用了Cookie的强大功能。下表是Cookie的一些常用的属性:
  
  属性 描述
  Domain 设定/获得Cookie应属于的域名。一旦设定了此属性,则只限定于此域名的Web服务器访问此Cookie。可以设定为ccw.com.cn
  Path 设定/获得Cookie应属于的路径,如果设定后,则访问此Cookie的Web页面则被限定在此路径里面。其他路径的Web页面则不能访问。
  Secure 设定/获得一个标识来表明利用HTTP协议是否能够安全的传输Cookie到客户端的浏览器。
  HasKeys 表明是否此Cookie是否是多个字符串组成的。
  
  在写入Cookie的时候,最大限度的利用这些属性,对于最大程度的利用写入的Cookie是十分重要的。
  
  三、C#是如何读取已产生的Cookie:
  读取指定的Cookie比起写入Cookie要来的容易的多了,只需要使用 Request.Cookies 对象就可以完成。下面是读取指定Cookie名称的方法:
  
  HttpCookie cookie = Request.Cookies [ Cookie的名称 ] ;
  
  下面是显示已经读取了的Cookie的数值:
  
  Response.Write (cookie . Value . ToString ( ) ) ; 掌握了上面的要点,读取Cookie就显得非常容易了,下列是读取Cookie的程序代码(read.aspx): <% @ language = C# %>
  <script runat = server >
  void ReadClicked ( Object Sender , EventArgs e )
  {
  //得到用户输入的cookie名称
  String strCookieName = NameField . Text ;
  //获得cookie
  HttpCookie cookie = Request.Cookies [ strCookieName ] ;
  //确定是否存在用户输入的cookie
  if ( null == cookie ) {
  Response.Write ( 没有发现指定的cookie <br > <hr > ) ;
  }
  else {
  //找到指定的cookie,显示cookie的值
  String strCookieValue = cookie . Value . ToString ( ) ;
  Response.Write ( strCookieName + cookie 的值为: <b >
  + strCookieValue + </b > <br > <hr > ) ;
  }
  }
  </script >
  <html >
  <body >
  在 C#页面中读取指定Cookie值<br >
  <form runat = server >
  请输入要读取的Cookie名称:<asp:textbox id = NameField runat = server />
  <asp:button text = 读取cookie onclick = ReadClicked runat = server />
  </form >
  </body >
  </html >