ASP教程 PHP教程 JSP教程 CGI教程 XML教程
  • ASP.NET教程
  • JAVA教程
    当前位置:教程 > 程序设计 > ASP.NET教程 > 正文

    技巧:在Silverlight应用程序中操作Cookie

    编辑:教程网 来源:网络 时间:2011年10月28日 15:47
    概述
    很多朋友来信问如何在Silverlight 2中操作Cookie,这里专门写篇文章介绍一下。为了实现在Silverlight应用程序中对于Cookie的操作,我们需要借助于HTMLPage.Document对象。

    在使用HtmlPage.Document之前,请先添加System.Windows.Browser命名空间。本文介绍了如何在Silverlight应用程序中操作Cookie,并在最后给出了一个操作Cookie的公用类,大家可以直接在自己的应用程序中使用。

    写入Cookie
    在Silverlight 应用程序中,我们可以通过HtmlPage.Document.SetProperty方法来设置Cookie或者使用HtmlPage.Document对象的Cookies属性(后面会讲到),如下代码所示:

    void btnSet_Click(object sender, RoutedEventArgs e)
    {
    DateTime expir = DateTime.UtcNow + TimeSpan.FromDays(7);

    String cookie = String.Format("{0}={1};expires={2}",
    this.txtKey.Text,
    this.txtValue.Text,
    expir.ToString("R"));

    HtmlPage.Document.SetProperty("cookie", cookie);
    }这里设置Cookie的过期时间为一周,除了设置过期时间外还可以设置domain、path等,后面的帮助类中你将看到这一点。

    如使用下面的界面写入Cookie:


    读取Cookie
    我们可以通过HtmlPage.Document.GetProperty方法来获取所有Cookie,另外在HtmlDocument中定义了Cookies属性,已经为我们封装好了GetProperty方法,可以直接使用,它的定义如下代码所示:

    public sealed class HtmlDocument : HtmlObject
    {
    public string Cookies
    {
    get{
    HtmlPage.VerifyThread();
    String property = this.GetProperty("cookie") as String;
    if (property != null)
    {
    return property;
    }
    return String.Empty;
    }
    set{
    HtmlPage.VerifyThread();
    String str = value;
    if (String.IsNullOrEmpty(str))
    {
    str = string.Empty;
    }
    this.SetProperty("cookie", str);
    }
    }
    }如使用下面这段代码来获取一个指定Key的Cookie值:

    void btnRetrieve_Click(object sender, RoutedEventArgs e)
    {
    String[] cookies = HtmlPage.Document.Cookies.Split(';');
    foreach (String cookie in cookies)
    {
    String[] keyValues = cookie.Split('=');
    if (keyValues.Length == 2)
    {
    if (keyValues[0].Trim() == this.txtKey.Text.Trim())
    {
    this.txtValue.Text = keyValues[1];
    }
    }
    }
    }如下图所示:


    删除Cookie
    删除Cookie非常简单,清空Cookie的值并设置它的过期时间,如下代码所示:

    void btnDelete_Click(object sender, RoutedEventArgs e)
    {
    DateTime expir = DateTime.UtcNow - TimeSpan.FromDays(1);
    string cookie = String.Format("{0}=;expires={1}",
    this.txtKey.Text, expir.ToString("R"));
    HtmlPage.Document.SetProperty("cookie", cookie);
    }Cookie帮助类
    由于在开发中,我们可能会经常用到对于Cookie的操作,我在这里总结了一个简单的Silverlight中操作Cookie帮助类,大家可以直接在自己的项目中使用,主要有如下几个功能:
  • 原文来自 教程网 转载请注明:http://www.websmill.com/chengxu/aspnet/29936.html

  • 上一篇:c#抓屏
  • 下一篇:软件开发经验总结(三)客观地认识程序员心中的恐惧