2012-04-04 3 views
0

У меня есть страница, которая использует мультивизию. Каждое представление содержит отдельный пользовательский элемент управления. Один из этих элементов управления пользователя имеет вид списка с кнопкой изображения, которая вызывает загрузку другого представления в мультивизе. Все в порядке до этого момента. Когда пользователь нажимает кнопку «Назад», они возвращаются к пользовательскому элементу управления, содержащему представление списка. Затем пользователь нажимает на другую кнопку изображения для просмотра разных данных и возвращает элемент управления пользователя, используя те же данные, что и раньше. Во время отладки я видел, что событие команды элемента не срабатывает после нажатия кнопки «Назад».listview itemcommand не стреляет после кнопки

Я попытался заменить мультивизию и поместить каждый элемент управления пользователя в отдельные панели. Это никак не повлияло на результат.

Я пробовал установить файл cookie, срок действия которого истекает через 5 секунд после загрузки страницы. Когда пользователь переходит к следующей странице, затем щелкает назад (и длительностью более 5 секунд), я заставляю форму снова отправить. Это снова загружает следующий элемент управления вместо перезагрузки страницы.

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

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

ответ

0

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

Поскольку страница не отбрасывается при нажатии пользователем кнопки «Назад», события не запускаются правильно, что вызывает проблемы со следующей страницей. Что должно произойти, вам нужно иметь возможность управлять навигационными кнопками браузера (т. Е. Назад и вперед). Для этого вам нужно установить EnableHistory в true в диспетчере сценариев и обработать событие Navigate от диспетчера сценариев. Затем вы можете перезагрузить элементы управления, используя информацию, которую вы сохраняете в объекте состояния.

Я использовал эти статьи от Dino Esposito на DotNetSlackers.com в качестве ссылки. Server Side History Management и Client Side History Management

0

Причина в том, что Back не влияет на жизненный цикл страницы. Это определенно потому, что страница кэширована, а кешированная страница не выполняется на сервере. Вы можете попробовать этот код, чтобы избавиться от этой проблемы.

Response.Cache.SetCacheability (HttpCacheability.NoCache);
Response.Cache.SetNoStore();

+0

Я пробовал это, но это заставляет пользователя перезагружать страницу, а не сама страница. Этот процесс должен быть плавным. Пользователь не должен прерываться. Все, что им нужно сделать, это отбросить назад и перезагрузить страницу без необходимости делать что-то. – fizch

Смежные вопросы