在我機子上試的Request.Cookies["CCCookies"]始終為null

解决方案 »

  1.   

    因为Cookie是保存在客户端的,上面的代码中,只有这个页面已经发送到了客户端,Cookies["CCCookies"]才会被保存,而在用Request.Cookies["CCCookies"]来获取这个Cookie的值时,因为页面还没有被发送到客户端,所以Cookie还没有被保存而返回空值,所以你上面的代码是错误的,但如果改为Session的话就可以正确运行,因为Session是保存在服务器端的,只要设置了Session变量的值它马上就被保存了,而不用等页面发送到客户端。BTW:上面的代码中没有必要用Cookie或Session来传值,在同一个方法中完全可以用一个私有变量来传值,同一个页面中可以用公用变量或ViewState(适用于需要回发的情况)来传值,不同的页面中,如果数据量小可以通过Url传递,数据量大才用Cookie(4K字节的限制)或Session(无限制)比较合适,要尽量慎用Session,因为过多的Session会严重影响服务器性能。
      

  2.   

    to  shenen(真的愛你),我改了一下,这样也是同样是上面那种现象啊,晕啊~~~~~~~
    private void Button1_Click(object sender, System.EventArgs e)
    {
    Response.Cookies["CCCookies"].Value = txt_str.Text; 
    Label1.Text=Request.Cookies["CCCookies"].Value;
    }
      

  3.   

    to webdiyer(陕北吴旗娃) 
    听大哥的分析是很有有道理.我做上面这种传值只是想简单说明一下问题,我真正使用时是用COOKIE来做购物车的.
    如果我想要上面那段程序能实时运行一次事件就能在标签上得到文本框的值.该怎么写这段程序呢?请大哥再稍加指点.谢谢!
      

  4.   

    你搞錯了吧,
    private void Button1_Click(object sender, System.EventArgs e)
    {
    Response.Cookies["CCCookies"].Value = txt_str.Text; 
    Label1.Text=Request.Cookies["CCCookies"].Value;
    }是一次就可以在label1中顯示出來值了,不信你新增一個頁,然後試一下
      

  5.   

    to  justgo(小不点儿):那不是很简单吗:
    Label1.Text=txt_str.Text;
    就行了。
      

  6.   

    对不起,shenen(真的愛你)说得是对的,确实一次可以取出来值,这下该我糊涂了!:)
      

  7.   

    谁能给大家解释一下,按理说Cookie没有被发送到客户端是不会被保存的,怎么会取到值呢?难道是先保存在Session中了??
      

  8.   

    to shenen(真的愛你)  我今早又试过了.第一次是可以一次就取得txt文本框的值,可是你试着改变txt里的值再按确定时,就会有延迟.郁闷!to webdiyer(陕北吴旗娃) 我这里用Cookie目的只是要测试cookie这个问题.所以没有采取Label1.Text=txt_str.Text;
      

  9.   

    注,在购物车用cookie做实例时也照样出现这个问题,基测试链结:http://211.155.23.138:8888/nwb/product/mycart.aspx
    测试时请多选几次产品或进行更新,删除cookie时都会有延迟的现象.
      

  10.   

    private void Button1_Click(object sender, System.EventArgs e)
    {
    Request.Cookies.Remove("CCCookies");
    Response.Cookies["CCCookies"].Value = txt_str.Text; 
    Label1.Text=Request.Cookies["CCCookies"].Value;
    }