ASP.net пользовательский контроль кошмар

Я реализовал пользовательский элемент управления, который я повторно использую на нескольких страницах. Тем не менее, я столкнулся с множеством проблем, таких как обслуживание сеансов на разных страницах, очистка сеансов при удалении - по сути, контроль состояния состояний, и мне интересно, что все это стоит головной боли.

Каждый раз, когда страница загружается, к ней добавляется элемент управления, я использую сеанс для воссоздания ее состояния, где это применимо. Когда я ухожу со страницы, я очищаю сеанс через окно JavaScript.onunload с помощью веб-метода. Window.onunload доставляет мне неприятности, выполняя ПОСЛЕ нового события page_load, создавая ситуацию, с которой очень трудно справиться.

Любые советы о том, как исправить это без отказа от пользовательских элементов управления все вместе? Как еще можно повторно использовать код, не вырывая волосы? Спасибо!

2 ответа

Решение

Я решил проблему с использованием IsPostBack на странице, где размещен пользовательский элемент управления. Таким образом, каждый раз, когда страница не является результатом обратной передачи, переменные состояния пользовательского элемента управления будут инициализированы.

Это обычная головная боль. Основываясь на всей литературе, которую я видел, а также на своем личном опыте, просто не практично зависеть от сеанса очистки с помощью javascript или любых других средств. Концепция состояния сеанса накладывается на HTTP; это никогда не было предназначено, чтобы быть осведомленным о сессии.

Похоже, вы подчеркиваете состояние сеанса до его предела. Рассматривали ли вы ViewState или базу данных для управления данными с состоянием? Почему важно очищать данные сеанса каждый раз, когда пользователь уходит?

Другие вопросы по тегам