C# 会话变量有旧值,需要使用页面重定向进行更新

C# 会话变量有旧值,需要使用页面重定向进行更新,c#,asp.net,C#,Asp.net,我有一个会话变量,它不会用新值更新。我有两个页面,一个是你输入值,点击按钮,你会被重定向到第2页,在那里你可以检查你的输入,如果这是错误的,请单击“上一步”按钮,然后返回第一页,在那里可以更改输入,但现在,当我单击按钮再次验证时,新值不会显示在会话变量中,而只显示旧值。最后一天我一直在阅读关于会话的内容,但我就是找不到问题,下面是隐藏的代码: 第1页 第2页 protected void Page_Load(object sender, EventArgs e) { if (Sessio

我有一个会话变量,它不会用新值更新。我有两个页面,一个是你输入值,点击按钮,你会被重定向到第2页,在那里你可以检查你的输入,如果这是错误的,请单击“上一步”按钮,然后返回第一页,在那里可以更改输入,但现在,当我单击按钮再次验证时,新值不会显示在会话变量中,而只显示旧值。最后一天我一直在阅读关于会话的内容,但我就是找不到问题,下面是隐藏的代码:

第1页

第2页

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["value1"] != null)
    {   
        lbl2.Text = (String)Session["value1"].ToString();
    }        
}

protected void BackButton_Click(object sender, EventArgs e)
{
    Session["value1"] = lbl2.Text;

    Response.Redirect("~/Default.aspx");
}

也许我已经在这段代码上做了我自己的盲点,因为对我来说,这不应该有它所呈现的这个问题。任何想法和帮助都将不胜感激。

每次加载Page1时,lbl1都会设置为会话内容,除非从未设置过。因此,当您单击按钮时,在加载页面时,lbl1首先被设置回会话的内容。然后将该值读回&但会在会话中读回

请尝试以下方法:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostback)
    {
        if (this.Session["value1"] != null)
        {
            lbl1.Text = (String)this.Session["value1"].ToString();
        }
    }
}   
这表示只有在不回发的情况下才设置值(即不点击页面上的按钮)


同样在第2页中,也不需要调用ToString并强制转换为字符串。两者都可以。为什么要在
BackButton\u Click
中设置会话值?因此,如果在第一个屏幕中键入foo,单击
inputButton
,foo将显示在第2页的lbl2中,但如果在第2页键入bar,点击“BackButton”foo仍然显示在第1页?在第1页中,这个
lbl1
是一个标签或文本框,您在哪里更改会话值?Goog问Tim,我想我可以更改它,因为它不需要。第2页仅显示值,不允许用户更改,因此用户必须返回第1页以更改输入。第一页是文本框,第二页是标签。抱歉,不清楚。@user1501127如果您可以更改
Page1
中的值,它应该显示更新的值
lbl1。Text
是文本框吗?谢谢Simon!这就解决了问题,现在我只需要对其余的进行排序;)祝你过得愉快!
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostback)
    {
        if (this.Session["value1"] != null)
        {
            lbl1.Text = (String)this.Session["value1"].ToString();
        }
    }
}