Обнаружение обновления страницы без состояния просмотра - PullRequest
2 голосов
/ 21 июля 2009

Есть ли способ обнаружить обновление страницы без использования viewstate в веб-формах asp.net? Мне было интересно, было ли это вообще вообще возможно, поскольку asp.net mvc не использует viewstate, например.

Я стараюсь вообще не использовать viewstate, чтобы размер моей страницы был маленьким.

Ответы [ 4 ]

1 голос
/ 21 июля 2009

IsPostBack не будет работать, потому что это регистр обновления F5 или Pager, а не сообщение от какого-либо события.

0 голосов
/ 21 июля 2009

Протокол http не имеет состояния, и после отправки ответа тому, кто запрашивает запрос, он удаляет все его следы, кроме сеанса. Работа веб-форм заключается в том, что они сериализуют состояние вашей страницы и отправляют его клиенту, а затем возвращают на сервер, когда вы выполняете обратную передачу (запрос на публикацию формы). Таким образом, вы можете сохранить информацию о вашем клиенте в его сеансе о странице, на которой он был раньше, и затем проверить в сеансе, запрашивает ли он ту же страницу снова.

0 голосов
/ 21 июля 2009

Вы можете обнаружить обновление страницы на стороне сервера, используя IsPostBack. Фактически, любой код, который вы вводите в код Page_Load, будет выполняться при каждом обновлении страницы. Или я неправильно понял ваш вопрос?

0 голосов
/ 21 июля 2009

Почему вы не можете просто использовать IsPostback в коде с отключенным ViewState на странице? Таким образом, вы можете делать все, что вам нужно в коде, и не беспокоиться о том, что ViewState забивает ваш размер страницы.

Вы можете отключить ViewState на странице, добавив флаг enableViewState в директиву @Page.

Единственное, о чем я могу думать, это иметь фрагмент кода javascript, который улавливает нажатие клавиши F5, но, очевидно, это будет захватывать только обновление F5, а не обновление кнопки Refresh.

Этот сайт показывает, как захватывать нажатия клавиш с помощью Javascript:
http://www.go4expert.com/forums/showthread.php?t=2733

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...