我做了一个网页有3个框架,top,left,right.  left里放一个TreeView控件,right登陆后要把其cookies传递给left,怎样做?

解决方案 »

  1.   

    判断cookie存在不存在..存在的话直接取就可以.cookie存在于客户端机器上
      

  2.   

    [Quote=引用 1 楼 lovehongyun 的回复:]
    判断cookie存在不存在..存在的话直接取就可以. cookie存在于客户端机器上不行啊:
    建立两个网页:default1.aspx,default2.aspx
    default1.aspx.cs主要代码:public partial class _Default : System.Web.UI.Page 
    {
        string id = "123456";
        string name = "sa";
        protected void Page_Load(object sender, EventArgs e)
        {
            HttpCookie mycookie = new HttpCookie("user");
            mycookie.Values.Add("id", id);
            mycookie.Values.Add("name", name);
            Request.Cookies.Add(mycookie);
            Response.Write("cookies写入:<br/>"+"学号:"+mycookie.Values["id"].ToString());
            Response.Write("&nbsp;&nbsp;姓名:" + mycookie.Values["name"].ToString());
        }
    }
    default2.aspx.cs主要代码:protected void Page_Load(object sender, EventArgs e)
        {
            string s = Request.Cookies["user"].Values["id"];
            s += Request.Cookies["user"].Values["name"];
            Response.Write("cookies读出:" + s);
        }
    但总是出错:未将对象引用设置到对象的实例。在string s = Request.Cookies["user"].Values["id"];
    怎么回事?
      

  3.   

    要不LZ在取cookies页面加个判断?
    protected void Page_Load(object sender, EventArgs e)
        {
            string s = "";
            if( //cookies有值)
            {
                s = "Your ID:" + Request.Cookies["user"].Values["id"];
                s += "Welcome," + Request.Cookies["user"].Values["name"];
            }
            else
            {
                s = "未登录";
            }
            Response.Write(s);
        }
    我觉得是不是这样错了,比如用户还没登录,那就没有写cookies,这样你直接取肯定会有问题.
    LZ试试 0.0
      

  4.   

    你的两个页面全是在框架中的。如果两个页面都是同时加载,那么一个页面写cookie,另一个页面读cookie,这两个操作是同时进行。
    也就是说你读cookie的时候cookie还没有写。你读写cookie也总得有个先后吧?如果同时读写怎么可能到?
      

  5.   

    资料给你    自己学习去吧
    1.使用QueryString变量
      QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子:PassGetParamForm.aspx的C#代码
    private void btnSubmit_Click(object sender, System.EventArgs e)
    {
    string strUrl = "ReceiveParamForm.aspx?UserName=" +txtName.Text.Trim();
    Response.Redirect(strUrl); 
    }ReceiveParamForm.aspx中C#代码
    private void Page_Load(object sender, EventArgs e)
    {
       lblRecValue.Text = Request.QueryString["UserName"];
    }2.使用Application 对象变量  Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock。ApplicationParamForm.aspx中的C#代码
    private void btnSubmit_Click(object sender, System.EventArgs e)
    {
    Application.Lock();
    Application["UserName"] = txtName.Text.Trim();
    Application.UnLock(); Server.Transfer("ReceiveParamForm.aspx");
    }ReceiveParamForm.aspx中C#代码
    private void Page_Load(object sender, EventArgs e)
    {
      Application.Lock();
    this.lblRecValue.Text = Application["UserName"].ToString();
    Application.UnLock();
    }3.  使用Session变量
    这个是使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。SessionParamForm.aspx中的C#代码
    private void btnSubmit_Click(object sender, System.EventArgs e)
    {
    //创建Session变量
    Session["UserName"] =txtName.Text.Trim(); Response.Redirect("ReceiveParamForm.aspx"); 
    }ReceiveParamForm.aspx中C#代码
    private void Page_Load(object sender, EventArgs e)
    {
       //接收Session对象变量传递的值
    lblRecValue.Text =Session["UserName"].ToString();
    }4. 使用Cookie对象变量
      这个也是常使用的方法,与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。CookieParamForm.aspx的C#代码
    private void btnSubmit_Click(object sender, System.EventArgs e)
    {
    HttpCookie cookie_UserName = new HttpCookie("MyUserName");
    cookie_UserName.Value = this.txtName.Text.Trim();
    Response.AppendCookie(cookie_UserName);
    Response.Redirect("ReceiveParamForm.aspx"); }ReceiveParamForm.aspx中C#代码
    private void Page_Load(object sender, EventArgs e)
    {
        //接收Cookie对象变量传递的值
    lblRecValue.Text= Request.Cookies["MyUserName"].Value.ToString();
    }5.使用Server.Transfer方法
      这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。ServerParamForm.aspx的C#代码
    private void btnSubmit_Click(object sender, System.EventArgs e)
    {
    Server.Transfer("ReceiveParamForm.aspx");
    }public string UserName
    {
    get
    {
    return txtName.Text.Trim();   
    }
    }ReceiveParamForm.aspx中C#代码
    private void Page_Load(object sender, EventArgs e)
    {
       //接收Server.Transfer方法传递的值
    ServerParamForm newWeb; //实例ServerParamForm窗体
    newWeb = (ServerParamForm)Context.Handler;

    lblRecValue.Text = newWeb.UserName;
    }