I’m currently working on a web app/game using C# and ASP.NET(3.5). However, I’m running into a problem of variables used in the main page being reset to null whenever I click a button on the web form. I’m wondering if there was a way to allow to variables to persist for the life cycle of the entire application, as well as for the variables to be accessed from wherever/whenever.
Another issue I’m having at the moment is that I can’t seem to find a way to update the properties of controls, like text or colour, without having to refresh the page. Is there a way to update these properties “silently” without forcing the user to go through the whole page refresh cycle?
Thanks
You might have ViewState disabled at Page Level (or application level).
Usually ASP.NET stores the state of each control within the current page in the Viewstate Object to preserve their status over reloads. Have a look at the EnableViewState object in your code (Front End) or dig into the web.config.
If you also want data to persist at page level, use the Session object and work around the timeout property to find a suitable value that will work for you and your users. SlidingExpirationg could also be useful. If you are going to use this solution you might also ask yourself some questions. Is your application using 1 single server or is likely to be deployed to a server farm? If so, consider using SQL Session State instead of InProc as it will provide a more consistent “centric” place to stored the session data consumed by different servers.
Regarding updating controls without a page refresh you are looking for something called Ajax. Microsoft has release ASP.NET Ajax Toolkit, have a look at it, especially the asp:UpdatePanel which will let you “partial update” pieces of the page without reload everything else.
It’s the easiest, straight forward, way to update controls properties without much effort.