سؤال

I populate a collection in a UserControl which then creates dynamic LinkButton controls from the collection. When one is clicked, on postback, the collection is empty. Is this behavior by design or is there something I can do to keep the collections populated on postback without re-populating them in code? Do I need to re-query in the forms postback?

هل كانت مفيدة؟

المحلول

Every variable defined in a class inheriting Web.UI.Page will be destroyed at the end of the Page-Lifecycle(incl. controls and fields), hence it will be null at postback if you don't reinitialize it.

One way to persist it across postbacks is to store it in a Session-variable.

You will find a complete list of all options on how to persist variables across postbacks here: http://msdn.microsoft.com/en-us/magazine/cc300437.aspx

  • Application
  • Cookies
  • Form Post / Hidden Form Field
  • QueryString
  • Session
  • New State Containers in ASP.NET
  • Cache
  • Context
  • ViewState
  • Web.config and Machine.config Files Conclusion

It's the nature of HTTP that it is stateless.

نصائح أخرى

You need to persist the information in ViewState and recreate the controls when the ViewState is loaded after postback. For example, you could store number of buttons created and then recreate them.

See a similar solution at https://stackoverflow.com/a/15497035/1711598

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top