I set a session object at one juncture in my code:
Session("my_name") = "Dave"
Later in my code I give the user a chance to update this object:
Session("my_name") = TextBox1.Text
I reload my page and display a little hello statement like this:
Label1.Text = "Hello" & CStr(Session("my_name"))
The result is: “Hello Dave” no matter what I change Session(“my_name”) too.
EDIT: Here is the a full code-behind I wrote up to demonstrated:
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Response.ExpiresAbsolute = DateTime.Now.AddMonths(-1)
If Page.IsPostBack = False Then
Session("my_name") = "Dave"
End If
Label1.Text = CStr(Session("my_name"))
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Session("my_name") = TextBox1.Text
End Sub
End Class
The
Page‘sLoadevent fires up sooner than theButton‘s click event. Therefore, at the time it runs, the value ofSession("my_name")is still “Dave”.If you’d like to set it up correctly, you should either put the
Label1.Text = CStr(Session("my_name"))into thePreRenderevent handler of your page.You cut put it into the
Button‘sClickevent as well (after setting the session value, of course), but I guess that you want to use the session later for storing objects for less trivial purposes.(I guess that you’d like to use the session for more advanced purposes later. After all, what would be the point of using session if you only want to change a label’s text?)
Basically, here is what you want:
Here’s what’s happening with your current code:
You can read more about the topic in here: ASP.NET Page Life Cycle Overview.