Как сохранить значение глобальной переменной List <object>после обратной передачи - PullRequest
3 голосов
/ 16 сентября 2011

Сначала я посмотрел на этот вопрос: сохранить значение после обновления страницы . Но кажется, что он не работает с коллекциями, потому что ViewState хранит только одно значение. Мне нужно использовать коллекцию, потому что я не знаю, сколько экземпляров объекта создаст пользователь. Таким образом, ViewState не вариант. Я также пытался использовать статические переменные, но он хранит значения дольше, чем мне нужно (я нашел объяснение этому здесь: http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/3664cd62-46c7-4098-88a7-c09647673096).

Я был бы очень признателен за вашу помощь.

Ответы [ 3 ]

4 голосов
/ 16 сентября 2011

Часто использование состояния сеанса лучше для объектов меньшего размера, но вы также можете хранить любые сериализуемые объекты в ViewState (http://msdn.microsoft.com/en-us/library/ms972976.aspx).

Примечание: пожалуйста, избегайте хранения данных в статических свойствах в ASP.Net, так как значения являются общими для всех запросов. Примечание к примечанию - HttpContext.Current на самом деле не является статическим объектом (объект для каждого запроса).

3 голосов
/ 16 сентября 2011

Вы можете сохранить экземпляр List <> в сеансе клиента на стороне сервера.Тогда по каждому запросу у вас будет доступ к списку в сеансе.

Однако вы все равно должны иметь возможность использовать viewstate, если элементы в вашем List <> являются сериализуемыми.

Вы должны учитывать объем данных, которыми обмениваются браузер и веб-сервер при использовании viewstate.Если ваши элементы не слишком велики, и у вас их не будет слишком много в списке, возможно, состояние представления не будет слишком разумным.

0 голосов
/ 16 сентября 2011

вы можете использовать переменную уровня класса, которая содержит значение после записи, если вы хотите использовать List, сделайте его переменной уровня класса, тогда он не потеряет значение.

...