zoukankan      html  css  js  c++  java
  • 跨页面传值2之cookie多值使用

    单值cookie结构

    CookieKeyName——CookieValue

    CookieKeyName2——CookieValue2

    ...............

    通过CookieKeyName进行设置和调用(主键名称)

    类似于字符串变量

    多值Cookie 结构

    【主键(Key)名称】

        【子健(key)名称】:【子健值】

        【子健(key)名称2】:【子健值2】

        【子健(key)名称3】:【子健值3】

    【主键(key)名称2】

          【子健(key)名称】:【子健值】

        【子健(key)名称2】:【子健值2】

        【子健(key)名称3】:【子健值3】

    注意:最终我们需要调用子健值,需要挖2层才能看到子健值。更像一个字符串数组

    Cookie操作需要掌握

    单值Cookie            多值Cookie

    添加(修改)          主键操作

    删除                -添加

                      -删除

                     子健操作

                      -添加

                      -删除

                      -修改

    多值Cookie的添加

    HttpCookie ck =new HttpCookie(“mulitCookie”)  主键“mulit”

    ck.value.add("name","小王");       子健“name”

    ck.value.add("age","18");

    ck.value.add("sex","男");

    ck.Expires=DateTime.MaxValue;

    Response.Cookie.add(ck);

     

    多值Cookie主键删除

    方法与清楚单值的Cookie完全相同

      ck.Expires=DateTime.Minvalue;

      Response.Cookie["keyname"].Expires=datetime.minvalue;

    另一种非标准的写法:

      ck=response.cookie["keyname"];

      会在会话期间,保留一个没有Value的空key

     

    子健修改

    对子健的调用:Cookie.Value对象集合添加一个子项:ck.value.add("...","...")

    修改子健的值:ck.value.set("keyname","newkeyname");

     

    注意:子健值的修改,不能象单值Cookie用add,而必须用set。

    实例:

      

      protected void btnx_Click(object sender, EventArgs e)
        {
            //声明Cookie并创建
            HttpCookie ck = new HttpCookie("cookie");
            //设置子健值
            ck.Values.Add("name","张三");
            ck.Values.Add("sex","");
            ck.Values.Add("age","18");
            //设置过期时间:永不过期
            ck.Expires = DateTime.MaxValue;
            //写入客户端
            Response.Cookies.Add(ck);
            
        }
        //跳转接受页面
        protected void btnlogin_Click(object sender, EventArgs e)
        {
            Response.Redirect("CookieInfo.aspx");
        }
        //删除Cookie
        protected void btndelect_Click(object sender, EventArgs e)
        {
            //删除整个Cookie
            Response.Cookies["cookie"].Expires = DateTime.MinValue;
    
        }
        //修改子健
        protected void btnupdate_Click(object sender, EventArgs e)
        {
            string upname = txtname.Text;
            if (upname!="")
            {
                HttpCookie ck = Request.Cookies["cookie"];
                ck.Values.Add("name", upname);
                ck.Expires = DateTime.MaxValue;
                //写入客户端
                Response.Cookies.Add(ck);
            }
        }

     

     

    接收

     protected void Page_Load(object sender, EventArgs e)
        {
            if (Response.Cookies["cookie"]!=null)
            {
                //这样写语句太长,台繁琐
                //lab.Text += Request.Cookies["cookie"].Values["name"] + ",";
                //lab.Text += Request.Cookies["cookie"].Values["sex"] + ",";
                //lab.Text += Request.Cookies["cookie"].Values["age"] + "岁";
    
                //这样写一幕了然,Response  是响应页的对象  Request是请求页的对象
                HttpCookie _ck;
                _ck = Request.Cookies["cookie"];
                lab.Text = _ck.Values["name"] + "," + _ck.Values["sex"] + "," + _ck.Values["age"] + "";
    
            }

     

  • 相关阅读:
    从yield关键字看IEnumerable和Collection的区别 Clark
    Jquery ui widget开发 Clark
    .Net 中的反射(动态创建类型实例) Part.4 Clark
    迭代器学习之一:使用IEnumerable和IEnumerator接口 Clark
    6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱 Clark
    学习之路二:关于集合和数组内在联系的深入了解 Clark
    值类型的装箱与拆箱浅析 Clark
    .Net 中的反射(查看基本类型信息) Part.2 Clark
    .Net 中的反射(反射特性) Part.3 Clark
    委托和事件(一) Clark
  • 原文地址:https://www.cnblogs.com/xiaowie/p/9172874.html
Copyright © 2011-2022 走看看