- 热门文章:
- · ASP.NET中Cookie编程的基础知识(4)
- · ASP.NET中Cookie编程的基础知识(3)
- · ASP.NET中Cookie编程的基础知识(2)
- · ASP.NET中Cookie编程的基础知识(1)
- · .NET中窗体间相互访问的几种方式
- · .net中PictureBox中图片的拖动
- · 在.NET上如何根据字符串动态创建控件
- · .NET 窗体之间的交互
- · 使用UltraWinGrid时双击的处理
- · .Net 下的Wondows窗体常用项目
- · 在.net中实现与ASP完全兼容的MD5算法(包括中文字符)
- · .Net FrameWork SDK文档的例子演示
上一篇:ASP.NET中Cookie编程的基础知识(6) >>
ASP.NET中Cookie编程的基础知识(5)
前面的示例假设您要读取名称已知的 Cookie。有时,您可能需要读取可供页面使用的所有 Cookie。要读取可供页面使用的所有 Cookie 的名称和值,您可以利用如下代码遍历 Request.Cookies 集合:
Dim i As Integer
Dim output As String = ""
Dim aCookie As HttpCookie
For i = 0 to Request.Cookies.Count - 1
aCookie = Request.Cookies(i)
output &= "Cookie 名称 = " & Server.HtmlEncode(aCookie.Name) & "<br>"
output &= "Cookie 值 = " & Server.HtmlEncode(aCookie.Value) & _
& "<br><br>"
Next
Label1.Text = output
注意:运行此代码时,您很可能会看到一个名为“ASP.NET_SessionId”的 Cookie,ASP.NET 用这个 Cookie 来保存您的会话的唯一标识符。这个会话 Cookie 不会永久保存到您的硬盘上。有关会话 Cookie 的详细信息,请参阅本文后面的 Cookie 和会话状态。
前面的示例有一个限制:如果 Cookie 有子键,就会以一个单独的名称/值字符串来显示子键。Cookie 的 HasKeys(英文)属性可以告诉您该 Cookie 是否有子键。如果有子键,您可以在子键集合中向下钻取,获取各个子键的名称和值。
如前文所述,您可以从 Cookie 属性 Values(英文)中获取有关子键的信息,该属性是类型 NameValueCollection 的集合。您可以根据索引值从 Values 集合中直接读取子键值。相应的子键值可以从 Values 集合的成员 AllKeys(英文)中得到,该成员将返回一个字符串集合。
以下示例是对前一示例的修改。示例中使用 HasKeys 属性来测试子键,如果检测到子键,就从 Values 集合中获取子键:
Dim i As Integer
Dim j As Integer
Dim output As String = ""
Dim aCookie As HttpCookie
Dim subkeyName As String
Dim subkeyValue As String
For i = 0 To Request.Cookies.Count - 1
aCookie = Request.Cookies(i)
output &= "名称 = " & aCookie.Name & "<br>"
If aCookie.HasKeys Then
For j = 0 To aCookie.Values.Count - 1
subkeyName = Server.HtmlEncode(aCookie.Values.AllKeys(j))
subkeyValue = Server.HtmlEncode(aCookie.Values(j))
output &= "子键名称 = " & subkeyName & "<br>"
output &= "子键值 = " & subkeyValue & "<br><br>"
Next
Else
output &= "值 = " & Server.HtmlEncode(aCookie.Value) & "<br><br>"
End If
Next
Label1.Text = output
您也可以把子键作为 NameValueCollection 对象进行提取,如下所示:
If aCookie.HasKeys Then
Dim CookieValues As _
System.Collections.Specialized.NameValueCollection = aCookie.Values
Dim CookieValueNames() As String = CookieValues.AllKeys
For j = 0 To CookieValues.Count – 1
subkeyName = Server.HtmlEncode(CookieValueNames(j))
subkeyValue = Server.HtmlEncode(CookieValues(j))
output &= "子键名称 = " & subkeyName & "<br>"
output &= "子键值 = " & subkeyValue & "<br><br>"
Next
Else
output &= "值 = " & aCookie.Value & "<br><br>"
End If
注意:请记住,我之所以调用 Server.HtmlEncode 方法,只是因为我要在页面上显示 Cookie 的值。如果您只是测试 Cookie 的值,就不必在使用前对其进行编码。
修改和删除 Cookie
有时,您可能需要修改某个 Cookie,更改其值或延长其有效期。(请记住,由于浏览器不会把有效期信息传递到服务器,所以您无法读取 Cookie 的过期日期。)
当然,实际上您并不是直接更改 Cookie。尽管您可以从 Request.Cookies 集合中获取 Cookie 并对其进行操作,但 Cookie 本身仍然存在于用户硬盘上的某个地方。因此,修改某个 Cookie 实际上是指用新的值创建新的 Cookie,并把该 Cookie 发送到浏览器,覆盖客户机上旧的 Cookie。
以下示例说明了如何更改用于储存站点访问次数的 Cookie 的值:
Dim counter As Integer
If Request.Cookies("counter") Is Nothing Then
counter = 0
Else
counter = CInt(Request.Cookies("counter").Value)
End If
counter += 1
Response.Cookies("counter").Value = counter.ToString
Response.Cookies("counter").Expires = DateTime.Now.AddDays(1)
或者:
Dim ctrCookie As HttpCookie
Dim counter As Integer
If Request.Cookies("counter") Is Nothing Then
ctrCookie = New HttpCookie("counter")
Else
ctrCookie = Request.Cookies("counter")
End If
counter = CInt(ctrCookie.Value) + 1
ctrCookie.Value = counter.ToString
ctrCookie.Expires = DateTime.Now.AddDays(1)
Response.Cookies.Add(ctrCookie)
下一篇:ASP.NET中Cookie编程的基础知识(4) >>
相关文章:
- · 利用.NET语言开发自己的脚本语言(一)
- · .NET中的数据类型的一些变化
- · 网上发现的文章(测试驱动开发)
- · .NET程序实现多语言
- · .NET Framework中使用XML Web Service(2)
- · .NET Framework中使用XML Web Service(1)
- · 管理三元式的新思路,涉及到查询时似乎可以借用Social Network的思想
- · 使用AOP微型框架的例子
- · VB.NET中使用FTP下载文件的两种方法
- · .net下基于API封装的DirectUIHWND窗体访问
- · 在.net中调用存储过程的另一种方法
- · .NET Remoting 实现分布式数据库查询
- · 使用CodeDom开发基于B/S的.NET+MSSQL代码生成器的随感
- · 利用.NET的Reflection增强对象工厂的扩展性
- · .NET框架中基于角色的安全性(3)
- · .NET框架中基于角色的安全性(2)
- · .NET框架中基于角色的安全性(1)
- · .net的4个基本概念
- · 部署.net平台的程序
- · .net中何有效的使用Cache
- · 关于如何操作其他窗体的控件或变量的方法!
- · .net官方编码方法和命名规则
- · .NET 开发AutoCAD2006指南(二)
- · .NET开发AutoCAD指南(一)
- · 用.net 2003开发Windows CE应用,解决与pocket pc通讯的问题
- · .NET 开发AutoCAD2006指南(二)
- · 《.NET软件技术学习与实践》之序言
- · .net remoting范例
- · .net缓存应用与分析
- · 一种改进的轻量级.NET应用程序性能测试框架
- · 用.NET创建Windows服务
- · .net中清除EXCEL进程最有效的方法
- · 初探.NET中的delegate类型与.NET事件
- · .NET中自己构建一个ArrDictionary
- · 使用.NET生成Excel文件
- · 根据函数名称定位函数
- · .Net项目制作安装程序
- · 使用.net下的系统事件增强应用程序
