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

  概述  很多朋友来信问如何在Silverlight 2中操作Cookie这里专门写篇文章介绍为了实现在Silverlight应用中对于Cookie操作我们需要借助于HtmlPage.Document对象

  在使用HtmlPage.Document的前请先添加.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.("R"));
  HtmlPage.Document.SetProperty("cookie", cookie);
}
  这里设置Cookie过期时间为除了设置过期时间外还可以设置do、path等后面帮助类中你将看到这

  如使用下面界面写入Cookie:

窍门技巧:在Silverlight应用<img src='/icons/6555chengxu.gif' />中操作Cookie

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

public sealed HtmlDocument : HtmlObject
{
  public Cookies
  {
    get{
      HtmlPage.VeryThread;
      String property = this.GetProperty("cookie") as String;
       (property != null)
      {
         property;
      }
       String.Empty;
    }
    {
      HtmlPage.VeryThread;
      String str = value;
       (String.IsNullOrEmpty(str))
      {
        str = .Empty;
      }
      this.SetProperty("cookie", str);
    }
  }
}
  如使用下面这段代码来获取个指定KeyCookie值:

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

窍门技巧:在Silverlight应用<img src='/icons/6555chengxu.gif' />中操作Cookie

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

void btnDelete_Click(object sender, RoutedEventArgs e)
{
  DateTime expir = DateTime.UtcNow - TimeSpan.FromDays(1);
   cookie = String.Format("{0}=;expires={1}",
    this.txtKey.Text, expir.("R"));
  HtmlPage.Document.SetProperty("cookie", cookie);
}
Cookie帮助类  由于在开发中我们可能会经常用到对于Cookie操作我在这里整理总结了个简单Silverlight中操作Cookie帮助类大家可以直接在自己项目中使用主要有如下几个功能:

  1.写入Cookie

  2.读取Cookie

  3.删除Cookie

  4.判断Cookie是否存在

  当然如果你还有别需求可以再进步完善完整代码如下:

public CookiesUtils
{
  public void SetCookie(String key, String value)
  {
    SetCookie(key, value, null, null, null, false);
  }
  public void SetCookie(String key, String value, TimeSpan expires)
  {
    SetCookie(key, value, expires, null, null, false);
  }
  public void SetCookie(String key, String value, TimeSpan? expires,
    String path, String do, bool secure)
  {
    StringBuilder cookie = StringBuilder;
    cookie.Append(String.Concat(key, "=", value));
     (expires.HasValue)
    {
      DateTime expire = DateTime.UtcNow + expires.Value;
      cookie.Append(String.Concat(";expires=", expire.("R")));
    }
     (!String.IsNullOrEmpty(path))
    {
      cookie.Append(String.Concat(";path=", path));
    }
     (!String.IsNullOrEmpty(do))
    {
      cookie.Append(String.Concat(";do=", do));
    }
     (secure)
    {
      cookie.Append(";secure");
    }
    HtmlPage.Document.SetProperty("cookie", cookie.);
  }
  public GetCookie(String key)
  {
    String cookies = HtmlPage.Document.Cookies.Split(';');
    String result = (from c in cookies
            let keyValues = c.Split('=')
            where keyValues.Length 2 && keyValues[0].Trim key.Trim
            select keyValues[1]).FirstOrDefault;
     result;
  }
  public void DeleteCookie(String key)
  {
    DateTime expir = DateTime.UtcNow - TimeSpan.FromDays(1);
     cookie = String.Format("{0}=;expires={1}",
      key, expir.("R"));
    HtmlPage.Document.SetProperty("cookie", cookie);
  }
  public bool Exists(String key, String value)
  {
     HtmlPage.Document.Cookies.Contains(String.Format("{0}={1}", key, value));
  }
}
整理总结  本文介绍了在Silverlight应用中如何操作Cookie希望对大家有所帮助

Tags: 

延伸阅读

最新评论

发表评论