两个文本框,txb1 和 txb2;
一个按钮,btn;从btn单击事件中,将 txb1.Text 的值赋给Session;从Page_Load事件中,可以将 Session 的值赋给 txb2.Text,而不能赋给 txb1.Text;一旦在Page_Load事件中将 Session 的值赋给 txb1.Text,就会导致 Session清空,并且 再赋给 txb2.Text 都不可以。请问这是怎么回事,如何解决?Visual Studio 2005

解决方案 »

  1.   

    为什么这么麻烦?直接txb2.Text=txb1.Text不可以吗?
      

  2.   

    从btn单击事件中,将 txb1.Text 的值赋给Session; 从Page_Load事件中,可以将 Session 的值赋给 txb2.Text,而不能赋给 txb1.Text; 
    执行顺序的问题,Page_Load时你的Session 本来就是空的
      

  3.   

    =====
    同意,已进入就执行Page_Load事件,Session 此时无值 传给txb2.Text,
      

  4.   


    提交成功后,使用防后退功能,跳到jump页,然后由jump页再跳回来,需要保存数据到Session。
      

  5.   

    流程:
    1、单击btn按钮,提交数据;
    2、将txb1.Text的值取出,放入Session;
    3、跳转到“提交成功,请稍候”页面,防后退功能。
    4、将刚才Session值再给txb1.Text,因为这个文本框中的内容需要重复利用,我不想让使用者重新输入。
      

  6.   

    流程: 
    1、单击btn按钮,提交数据; 
    2、将txb1.Text的值取出,放入Session; 
    3、跳转到“提交成功,请稍候”页面,防后退功能。 
    4、由跳转页再跳回本页面。
    5、将刚才Session值再给txb1.Text,因为这个文本框中的内容需要重复利用,我不想让使用者重新输入。
      

  7.   


    “页面1”提交成功→跳到“防后退页”→由“防后退页”跳回“页面1”需要:将“页面1”txb1.Text的数据通过跳转,依然还在txb1.Text中。
      

  8.   

    贴出代码看看,就是赋值问题怎么会不行,看看session传换成字符串没//生成session
    Session["userLogin"] = txb1.Text ;
    Response.Redirect("jump.aspx");private void Page_Load(object sender, System.EventArgs e)
    {
    if(!Page.IsPostBack)
    {
    if(Session["userLogin"]==null)
    {
    txb1.Text = Session["userLogin"].ToString();

    }

    }
    }
      

  9.   

    写错了,判断那句是!=//生成session
    Session["userLogin"] = txb1.Text ;
    Response.Redirect("jump.aspx");private void Page_Load(object sender, System.EventArgs e)
            {
                if(!Page.IsPostBack)
                {
                    if(Session["userLogin"]!=null)
                    {
                        txb1.Text = Session["userLogin"].ToString();
                        
                    }
                    
                }
            }
      

  10.   

    上面的代码有点汗。Session["userLogin"]==null
    都等于null了还赋值给txb1.text
      

  11.   

    第一个页面
     protected void Page_Load(object sender, EventArgs e)
            {
                if(!IsPostBack)
                {
                    if (Session["TextBox1"] != null)
                    {
                        TextBox1.Text = Session["TextBox1"].ToString();
                    }
                }
            }        protected void Button1_Click(object sender, EventArgs e)
            {
                if (TextBox1.Text != string.Empty)
                {
                    Session["TextBox1"] = TextBox1.Text;
                    Response.Redirect("~/Web/AutoGridView.aspx?TextBox1="
                        + Session["TextBox1"].ToString());
                }
            }
      

  12.   

    第二个页面  protected void Button1_Click(object sender, EventArgs e)
            {
                Response.Redirect("~/Web/ButtonAndSession.aspx");
            }
    第一个页面的传值只是为了验证看看是否像你说的Session值丢了。
      

  13.   

    我的代码是这样的:提交页:public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            txbY.Text = Convert.ToString(Session["Name"]);
        }    protected void btn_Click(object sender, EventArgs e)
        {
            Session["Name"] = txbY.Text.Trim();        Session["URL"] = "Default.aspx";
            Response.Redirect("UnBack.aspx");
        }
    跳转页:    private void UnBack() // 防后退函数,强制不缓存页面。
        {
            Response.Buffer = true;
            Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
            Response.Expires = 0;
            Response.CacheControl = "no-cache";
        }    protected void Page_Load(object sender, EventArgs e)
        {
            UnBack(); // 防后退,放在 page_load 里面。        string url = "<meta http-equiv=\"refresh\" content=\"1;url=" + Convert.ToString(Session["URL"]) + "\">";
            Response.Write(url);
        }
    将Session赋给自己,怎么试都不成功;
    是赋给另一个TextBox就可以。
      

  14.   

    string url = "<meta http-equiv=\"refresh\" content=\"1;url=" + Convert.ToString(Session["URL"]) + "\">";
            Response.Write(url);
    在调回Default页时 txbY.Text = Convert.ToString(Session["Name"]);
    这设个断点看看,取值是多少,在改成赋值另外那个,看看你能赋值上的那个textbox 取值session的值是多少
      

  15.   

    提交页: 在page_load里没有判断IsPostBack.
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                txbY.Text = Convert.ToString(Session["Name"]);
            }
        }
      

  16.   

    没关系,我也是刚刚到CSDN报道,以后请教大家的地方多的了.