MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Почему при каждом нажатии на кнопку удаляются все элементы из List?"
Answer 1141135
ASP.NET создает объект страницы заново при каждом запросе к веб-серверу. Переменные экземпляра, соответственно, при этом теряются. Статические переменные, возможно, будут сохраняться, но их время жизни ограничено временем жизни домена приложения, поэтому в них хранить состояние также нельзя - оно будет теряться в моменты, когда IIS перезагружает домен приложений. Чтобы надежно хранить состояние, можно воспользоваться одним из следующих методов:
- Хранение на стороне клиента: ViewState
- Хранение на стороне сервера: Application State, Session State
- Хранение во внешней базе данных (в сочетании с каким-либо из способов первой группы для сопоставления данных клиенту)
Пример работы с ViewState:
ViewState["list"] = new List<int> { 1, 2, 3 }; //... var list = ViewState["list"];
Выбор между разными способами определяется объемом информации, насколько долго ее нужно хранить, требованиями к нагрузке сетевого соединения и ресурсов сервера. Способы из первой группы приводят к повышенной нагрузке на сетевое соединение, так как данные передаются туда-сюда с каждым запросом, и при закрытии страницы в браузере данные потеряются. Способы из второй группы позволяют сохранять данные между разными заходами на страницу, и больше нагружают сервер. Третья группа позволяет переложить нагрузку на внешний сервер СУБД, а также самостоятельно управлять временем жизни (как правило, используется в сочетании с аутентификацией, чтобы можно было сохранять данные даже между заходами с разных устройств).
Подробнее о способах хранения состояния можно прочитать здесь: ASP.NET State Management Recommendations
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.