我是这样写入的:
HttpCookie myCookie = new HttpCookie("SupperCookies");
..................省略..............
myCookie["HomeID"] = 'aaa';
HttpContext.Current.Response.Cookies.Add(myCookie);在用户做某个操作后,我想把其中的某一个值改变,比如myCookie["HomeID"]之前是'aaa',现在想改成'bbb',就是实现不了啊,开始是根据旧cookies来生成一个新cookies,让要改变的值不同,后来是直接改了值,再调用SetCookie方法,也还是不行啊。

解决方案 »

  1.   

    HttpCookie Mycookie = new HttpCookie("SupperCookies");
    Mycookie.Values["HomeID"] = "aaa";
    Response.Cookies.Add(Mycookie );
      

  2.   

    我那样写入没有问题,其他地方都可以读取,我现在的问题是我要把我之前写入的cookies更新。
    直接重新写入新cookies和更改旧cookies好象都不行,还是没变。
      

  3.   

    cookie不能直接更改,修改某个 Cookie 实际上是指用新的值创建新的 Cookie,并把该 Cookie 发送到浏览器,覆盖客户机上旧的 Cookie。
    Dim ctrCookie As HttpCookie
    Dim counter As Integer
    If Request.Cookies("SupperCookies") Is Nothing Then
        ctrCookie = New HttpCookie("SupperCookies")
    Else
        ctrCookie = Request.Cookies("SupperCookies")
    End If
    ctrCookie.Value = newvalue.ToString
    ctrCookie.Expires = DateTime.Now.AddDays(1)
    Response.Cookies.Add(ctrCookie)
      

  4.   

    我也这样做了啊,读出旧cookies,根据它的值生成新cookies,再让旧cookies失效,但是这样还是不行啊。
                if (HttpContext.Current.Request.Cookies[strRootCookiesName] != null)
                {
                    // 获取旧Cookies
                    HttpCookie cookiesOld = HttpContext.Current.Request.Cookies[strRootCookiesName];
                    System.Collections.Specialized.NameValueCollection cookiesValueCollection = cookiesOld.Values;                // 生成新Cookies
                    HttpCookie cookieNew = new HttpCookie(strRootCookiesName);
                    cookieNew.Expires = cookiesOld.Expires;
                    cookieNew.Domain = cookiesOld.Domain;
                    foreach (string strKey in cookiesValueCollection.Keys)
                    {
                        if (strCookiesKey == strKey)
                        {
                            cookieNew[strCookiesKey] = strCookieValue;
                        }
                        else
                        {
                            cookieNew[strKey] = cookiesValueCollection[strKey];
                        }
                    }
                    cookiesOld.Expires = DateTime.Now.AddDays(-1d);                HttpContext.Current.Response.Cookies.Add(cookieNew);
                }
      

  5.   

    if (HttpContext.Current.Request.Cookies[strRootCookiesName] != null)里面,不用再new了,直接改cookiesOld
      

  6.   

    恩,回去看看,但是,又有一个新问题啊。
    这样Expires是从当前时间算起了,应该是从第一次写cookies的时间算起啊。
      

  7.   

    HttpCookie cookiesOld = HttpContext.Current.Request.Cookies[strRootCookiesName];
                System.Collections.Specialized.NameValueCollection cookiesValueCollection = cookiesOld.Values;
                foreach (string strKey in cookiesValueCollection.Keys)
                {
                    if (strCookiesKey == strKey)
                    {
                        cookiesOld[strCookiesKey] = strCookieValue;
                    }
                }
                HttpContext.Current.Response.SetCookie(cookiesOld);我这样写,竟然抛异常了,说值在枚举中被修改,晕死了。
    回去再看看。
      

  8.   

    cookie要按照你自己定义的变量名来赋值和取值例:Mycookie.Values["HomeID"] = "aaa";这样就可以覆盖了