http://www.cnblogs.com/Terrylee/archive/2008/07/27/tips-set-cookies-in-silverlight-application.HTML
概述很多朋友来信问如何在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}",expir.ToString("R")); HTMLPage.document.SetProperty("cookie",cookie);}cookie帮助类
由于在开发中,我们可能会经常用到对于cookie的 *** 作,我在这里总结了一个简单的Silverlight中 *** 作cookie帮助类,大家可以直接在自己的项目中使用,主要有如下几个功能:
1.写入cookie
2.读取cookie
3.删除cookie
4.判断cookie是否存在
当然如果你还有别的需求,可以再进一步完善,完整的代码如下:
public class cookiesUtils{ public static voID setcookie(String key,String value) { setcookie(key,value,null,false); } public static voID setcookie(String key,String value,TimeSpan expires) { setcookie(key,expires,TimeSpan? expires,String path,String domain,bool secure) { StringBuilder cookie = new StringBuilder(); cookie.Append(String.Concat(key,"=",value)); if (expires.HasValue) { DateTime expire = DateTime.UtcNow + expires.Value; cookie.Append(String.Concat(";expires=",expire.ToString("R"))); } if (!String.IsNullOrEmpty(path)) { cookie.Append(String.Concat(";path=",path)); } if (!String.IsNullOrEmpty(domain)) { cookie.Append(String.Concat(";domain=",domain)); } if (secure) { cookie.Append(";secure"); } HTMLPage.document.SetProperty("cookie",cookie.ToString()); } public static string 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(); return result; } public static voID Deletecookie(String key) { DateTime expir = DateTime.UtcNow - TimeSpan.FromDays(1); string cookie = String.Format("{0}=;expires={1}",key,expir.ToString("R")); HTMLPage.document.SetProperty("cookie",cookie); } public static bool Exists(String key,String value) { return HTMLPage.document.cookies.Contains(String.Format("{0}={1}",value)); }}总结
本文介绍了在Silverlight应用程序中如何 *** 作cookie,希望对大家有所帮助。
总结以上是内存溢出为你收集整理的SILVERLIGHT *** 作COOLKIE全部内容,希望文章能够帮你解决SILVERLIGHT *** 作COOLKIE所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)