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

技巧:在Silverlight应用程序中 *** 作Cookie,第1张

概述本文首发于 博客园,作者为 TerryLee,原文地址: 技巧:在Silverlight应用程序 *** 作Cookie 概述 很多朋友来信问如何在Silverlight 2中 *** 作Cookie,这里专门写篇文章介绍一下。为了实现在Silverlight应用程序中对于Cookie的 *** 作,我们需要借助于HtmlPage.Document对象。 在使用HtmlPage.Document之前,请先添加Syste 本文首发于 博客园,作者为 TerryLee,原文地址: 技巧:在Silverlight应用程序中 *** 作Cookie 概述 很多朋友来信问如何在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}",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,希望对大家有所帮助。 本文示例代码以及cookiesUtils代码下载: 更多Silverlight 2的文章请参考 Silverlight 2 相关文章汇总。 本文首发于 博客园,作者为 TerryLee,原文地址: 技巧:在Silverlight应用程序中 *** 作Cookie 总结

以上是内存溢出为你收集整理的技巧:在Silverlight应用程序中 *** 作Cookie全部内容,希望文章能够帮你解决技巧:在Silverlight应用程序中 *** 作Cookie所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1054501.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存