Silverlight的cookie操作

本文介绍了如何在Silverlight应用程序中使用HtmlPage.Document对象来操作Cookies,包括设置持久时间长的Cookie、读取已存在的Cookie、删除特定Cookie、判断特定key-value对是否存在以及获取当前cookie内容等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文让我们一起来学习如何利用Silverlight的HtmlPage.Document对象,实现在Silverlight操作Cookies.
    首先创建一个新的Silverlight应用程序,如图:
    
为使用HtmlPage.Document对象,我们要引入命名空间
  using  System.Windows.Browser;  // 引入此空间以便于使用Cookie操作
为操作Cookie,我们创建一个类:SLCookieHelp.cs,此类的操作包括:
 1、添加key-value键值对
 2、根据key删除
 3、根据key读取value
 4、读取cookie所有内容
 5、判断key-value是否在cookie中存在
 代码如下:
复制代码
using  System;
using  System.Net;
using  System.Windows;
using  System.Windows.Controls;
using  System.Windows.Documents;
using  System.Windows.Ink;
using  System.Windows.Input;
using  System.Windows.Media;
using  System.Windows.Media.Animation;
using  System.Windows.Shapes;
using  System.Windows.Browser;  // 引入此空间以便于使用Cookie操作

namespace  SLCookieOperate
{
    
public class SLCookieHelp
    
{
        
#region Cookie相关操作函数

        
#region 设置持久时间长的Cookie
        
/// <summary>
        
/// 设置持久时间长的Cookie
        
/// </summary>
        
/// <param name="key">the cookie key</param>
        
/// <param name="value">the cookie value</param>

        public  static void SetCookie(string key, string value)
        
{

            
string oldCookie = HtmlPage.Document.GetProperty("cookie"as String;

            DateTime expiration 
= DateTime.UtcNow + TimeSpan.FromDays(2000);

            
string cookie = String.Format("{0}={1};expires={2}", key, value, expiration.ToString("R"));

            HtmlPage.Document.SetProperty(
"cookie", cookie);

        }

        
#endregion


        
#region 读取一个已经存在的Cookie
        
/// <summary>
        
/// 读取一个已经存在的Cookie
        
/// </summary>
        
/// <param name="key">cookie key</param>
        
/// <returns>null if the cookie does not exist, otherwise the cookie value</returns>

        public static string GetCookie(string key)
        
{
            
string[] cookies = HtmlPage.Document.Cookies.Split(';');
            key 
+= '=';
            
foreach (string cookie in cookies)
            
{
                
string cookieStr = cookie.Trim();
                
if (cookieStr.StartsWith(key, StringComparison.OrdinalIgnoreCase))
                
{
                    
string[] vals = cookieStr.Split('=');
                    
if (vals.Length >= 2)
                    
{
                        
return vals[1];
                    }

                    
return string.Empty;
                }

            }


            
return null;
        }

        
#endregion


        
#region   删除特定的Cookie(清空它的Value值,过期值设置为-1天)
        
/// <summary>
        
/// 删除特定的Cookie(清空它的Value值,过期值设置为-1天)
        
/// </summary>
        
/// <param name="key">the cookie key to delete</param>


        
public static void DeleteCookie(string key)
        
{
            
string oldCookie = HtmlPage.Document.GetProperty("cookie"as String;
            DateTime expiration 
= DateTime.UtcNow - TimeSpan.FromDays(1);
            
string cookie = String.Format("{0}=;expires={1}", key, expiration.ToString("R"));
            HtmlPage.Document.SetProperty(
"cookie", cookie);
        }

        
#endregion


        
#region 判定指定的key-value对是否在cookie中存在
        
public static bool Exists(String key, String value)
        
{
            
return HtmlPage.Document.Cookies.Contains(
                String.Format(
"{0}={1}", key, value)
                );
        }

        
#endregion


        
#region  获取当前cookie内容
        
public static string getCookieContent()
        
{
            
return HtmlPage.Document.GetProperty("cookie"as String;
        }

        
#endregion


        
#endregion

    }

}

复制代码

创建用户界面如下图:

用户界面xaml代码如下:
复制代码
< UserControl x:Class = " SLCookieOperate.Page "
    xmlns
= " http://schemas.microsoft.com/winfx/2006/xaml/presentation "  
    xmlns:x
= " http://schemas.microsoft.com/winfx/2006/xaml "  
    Width
= " 400 "  Height = " 400 " >
    
< Grid x:Name = " LayoutRoot "  Background = " White " >
        
< StackPanel >
            
< TextBlock Text = " Silverlight操作Cookie学习总结 "  TextAlignment = " Center "  Margin = " 8 "  FontSize = " 16 "  Foreground = " red "   ></ TextBlock >
            
< TextBlock Text = " 请输入Key "  TextAlignment = " Center "  Margin = " 0,10,0,0 " ></ TextBlock >
            
< TextBox x:Name = " txtBxKey "  Width = " 250 " ></ TextBox >
            
< TextBlock Text = " 请输入Value "  TextAlignment = " Center " ></ TextBlock >
            
< TextBox x:Name = " txtBxValue "   Width = " 250 " ></ TextBox >
            
< Button Width = " 200 "  Height = " 30 "  Content = " 添加key-value对入cookie "  Margin = " 4 "  Click = " Button_Click "   ></ Button >
            
< Button Width = " 200 "  Height = " 30 "  Content = " 根据key删除key-value对 "  Margin = " 4 "  Click = " Button_Click_1 " ></ Button >
            
< Button Width = " 200 "  Height = " 30 "  Content = " 根据key读取对应value "  Margin = " 4 "  Click = " Button_Click_2 " ></ Button >
            
< Button Width = " 200 "  Height = " 30 "  Content = " 读取当前cookie内容 "  Margin = " 4 "  Click = " Button_Click_4 " ></ Button >
            
< Button Width = " 200 "  Height = " 30 "  Content = " 判断存在key-value对 "  Margin = " 4 "  Click = " Button_Click_3 " ></ Button >
            
< TextBlock Text = " 当前的Cookie内容 "  TextAlignment = " Center "  Foreground = " Red " ></ TextBlock >
            
< TextBlock x:Name = " tbCookie "  TextAlignment = " Center "  Foreground = " Green "  TextWrapping = " Wrap "   Width = " 280 "   ></ TextBlock >
            
        
</ StackPanel >
    
</ Grid >
</ UserControl >
复制代码

 Page.xaml.cs的代码如下:
复制代码
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Net;
using  System.Windows;
using  System.Windows.Controls;
using  System.Windows.Documents;
using  System.Windows.Input;
using  System.Windows.Media;
using  System.Windows.Media.Animation;
using  System.Windows.Shapes;
using  System.Threading;
using  System.Text;
using  System.IO;
using  System.Windows.Browser;  // 引入此空间以便于使用Cookie操作

namespace  SLCookieOperate
{
    
public   partial   class  Page : UserControl
    {

        
public  Page()
        {
            InitializeComponent();

        }


        
#region   清除文本输入框
        
private   void  txtBxClear()
        {
            
this .txtBxKey.Text  =   "" ;
            
this .txtBxValue.Text  =   "" ;
        }

        
#endregion

        
private   void  Button_Click( object  sender, RoutedEventArgs e)
        {
            
try
            {
                
string  keyStr  =   this .txtBxKey.Text.ToString();
                
string  valueStr  =   this .txtBxValue.Text.ToString();
                
if  ( ! (String.IsNullOrEmpty(keyStr)  ||  String.IsNullOrEmpty(valueStr)))
                {
                    SLCookieHelp.SetCookie(keyStr, valueStr);

                    MessageBox.Show(
" 添加成功! " );
                    txtBxClear();

                    
//  string kk = HtmlPage.Document.Cookies;
                     this .tbCookie.Text  =  SLCookieHelp.getCookieContent();
                }
                
else
                {
                    MessageBox.Show(
" 请输入key-value键值对! " );
                }


            }
            
catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

        }

        
private   void  Button_Click_1( object  sender, RoutedEventArgs e)
        {
            
string  keyStr  =   this .txtBxKey.Text.ToString();

            
if  ( ! String.IsNullOrEmpty(keyStr))
            {
                SLCookieHelp.DeleteCookie(keyStr);
                MessageBox.Show(
" 成功删除! " );
                
this .tbCookie.Text  =  SLCookieHelp.getCookieContent();

            }
            
else
            {
                MessageBox.Show(
" 请输入要删除的Key " );
            }
        }

        
private   void  Button_Click_2( object  sender, RoutedEventArgs e)
        {

            
string  keyStr  =   this .txtBxKey.Text.ToString();

            
if  ( ! String.IsNullOrEmpty(keyStr))
            {
                
string  valueStr  =  SLCookieHelp.GetCookie(keyStr);

                MessageBox.Show(
string .Format( " 对应你输入的Key的Value是: {0} " ,valueStr));
            }
            
else
            {
                MessageBox.Show(
" 请输入要查找的Key " );
            }

        }

        
private   void  Button_Click_3( object  sender, RoutedEventArgs e)
        {
            
string  keyStr  =   this .txtBxKey.Text.ToString();
            
string  valueStr  =   this .txtBxValue.Text.ToString();

            
if  ( ! (String.IsNullOrEmpty(keyStr)  ||  String.IsNullOrEmpty(valueStr)))
            {
                
if  (SLCookieHelp.Exists(keyStr, valueStr))
                {
                    MessageBox.Show(
" 此key-value对存在于cookie中 " );
                }
                
else
                {
                    MessageBox.Show(
" 没有找到此 key-value " );
                }
               
            }
            
else
            {
                MessageBox.Show(
" 请输入要判定的Key与Value对 " );
            }
        }

        
private   void  Button_Click_4( object  sender, RoutedEventArgs e)
        {
            
this .tbCookie.Text  =  SLCookieHelp.getCookieContent();
        }
    }
}
复制代码


 运行效果如下:


前往:Silverlight学习笔记清单 


原文地址:http://www.cnblogs.com/wsdj-ITtech/archive/2009/08/15/1546815.html

资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在本文中,我们将探讨如何通过 Vue.js 实现一个带有动画效果的“回到顶部”功能。Vue.js 是一款用于构建用户界面的流行 JavaScript 框架,其组件化和响应式设计让实现这种交互功能变得十分便捷。 首先,我们来分析 HTML 代码。在这个示例中,存在一个 ID 为 back-to-top 的 div 元素,其中包含两个 span 标签,分别显示“回到”和“顶部”文字。该 div 元素绑定了 Vue.js 的 @click 事件处理器 backToTop,用于处理点击事件,同时还绑定了 v-show 指令来控制按钮的显示与隐藏。v-cloak 指令的作用是在 Vue 实例渲染完成之前隐藏该元素,避免出现闪烁现象。 CSS 部分(backTop.css)主要负责样式设计。它首先清除了一些默认的边距和填充,对 html 和 body 进行了全屏布局,并设置了相对定位。.back-to-top 类则定义了“回到顶部”按钮的样式,包括其位置、圆角、阴影、填充以及悬停时背景颜色的变化。此外,与 v-cloak 相关的 CSS 确保在 Vue 实例加载过程中隐藏该元素。每个 .page 类代表一个页面,每个页面的高度设置为 400px,用于模拟多页面的滚动效果。 接下来是 JavaScript 部分(backTop.js)。在这里,我们创建了一个 Vue 实例。实例的 el 属性指定 Vue 将挂载到的 DOM 元素(#back-to-top)。data 对象中包含三个属性:backTopShow 用于控制按钮的显示状态;backTopAllow 用于防止用户快速连续点击;backSeconds 定义了回到顶部所需的时间;showPx 则规定了滚动多少像素后显示“回到顶部”按钮。 在 V
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值