Session Objects not Updating ASP.NET

限于喜欢 提交于 2019-12-05 05:40:51

The Page's Load event fires up sooner than the Button's click event. Therefore, at the time it runs, the value of Session("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 the PreRender event handler of your page.

You cut put it into the Button's Click event 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:

  • The Page_Load sets Session("my_name") to "Dave" if it is not a postback
  • The Button1_Click sets Session("my_name") to the textbox's text
  • The Page_PreRender sets the label's text.

Here's what's happening with your current code:

  • The Page_Load sets Session("my_name") to "Dave" if it is not a postback
  • The Page_Load sets the label's text
  • The Button1_Click sets Session("my_name") to the textbox's text

You can read more about the topic in here: ASP.NET Page Life Cycle Overview.

The Page.Load runs before your Button1_Click - so you are setting the value of your textbox to whatever you have in session, and then a bit later taking the contents of that textbox (which you have already overwritten) and popping it back into session.

You're not setting your Session variable default properly. Basically you're setting the session variable to 'Dave' on every page load that's not a postback. That even includes callbacks and page reloads.

To set the Session default try...

if( String.IsNullOrEmpty(Session["my_name"]) )
{
    Session["my_name"] = "Dave";
}

Now you can use your session variable without testing if it's part of a Postback or Callback.

here's what worked for me:

objectName objectInstance = Session["mySession"] as objectName; //offload
objectInstance.attributeToUpdate = true; //update
Session["mySession"] = objectInstance; //re-assign   
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!