Как сохранить значение списка глобальных переменных после обратной передачи
Я сначала посмотрел на этот вопрос: сохранить значение после обновления страницы. Но похоже, что это не работает с коллекциями, потому что ViewState хранит только одно значение. Мне нужно использовать коллекцию, потому что я не знаю, сколько экземпляров объекта создаст пользователь. Таким образом, отображение не вариант. Я также пытался использовать статические переменные, но он хранит значения дольше, чем мне нужно (я нашел объяснение этому здесь: http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/3664cd62-46c7-4098-88a7-c09647673096).
Я был бы чрезвычайно признателен вам за помощь.3 ответа:
Экземпляр List можно сохранить в клиентском сеансе на стороне сервера. Тогда по каждому запросу вы будете иметь доступ к списку в сеансе.
Тем не менее, вы все еще можете использовать viewstate, пока элементы в вашем списке сериализуемы.
При использовании viewstate следует учитывать объем данных, которыми обмениваются браузер и веб-сервер. Если ваши товары не являются неоправданно большими, и вы не будете иметь слишком много из них в списке, то отображение не может быть необоснованным.
Код может выглядеть примерно так.
private ArrayList GlobalList { get { return ViewState["GlobalList"]; } set { ViewState["GlobalList"] = value; } }
Часто использование состояния сеанса лучше для объектов lare, но вы также можете хранить любые сериализуемые объекты в ViewState ( http://msdn.microsoft.com/en-us/library/ms972976.aspx ).
Примечание: пожалуйста, избегайте использования хранения данных в статических свойствах в ASP.Net поскольку значения являются общими для всех запросов. Примечание на примечании-HttpContext.Тока не статические объекты (ТВ-запросов к объектам).