Функция ASP.NET ViewState иногда может быть обоюдоострым мечом. Я полагаюсь на это в большинстве своих проектов, и это значительно ускоряет разработку.
Моя проблема в том, что иногда пользователи пытаются обновить страницу, что приведет к потере состояния просмотра, в других случаях пользователь может захотеть добавить в закладки страницу, но при возврате состояние просмотра будет потеряно.
Современные браузеры отображают глупое диалоговое окно, когда пользователь пытается обновить страницу, которая является результатом операции POST (например, обратной передачи asp), которая вообще нежелательна.
Интересно, это способ продолжить использование ViewState и модели обратной передачи, но без недостатка диалогового окна обновления. (и, если возможно, добавьте страницу в закладки).
Примером того, что я мог бы сделать, является наличие страницы с записями и флажками рядом с ними, у пользователя есть возможность проверить все записи, которые он хочет удалить, и затем нажать кнопку удаления. После того, как пользователь нажимает кнопку «Удалить», записи анализируются на сервере, и на новой странице перечисляются все записи, которые были выбраны с помощью кнопки подтверждения удаления. Теперь, если пользователь нажимает кнопку «Обновить», он получает это глупое окно, чтобы подтвердить, хотят ли они оставлять сообщения.
Я понимаю, что ViewState является результатом использования модели Post Back, что означает, что большинство страниц asp.net являются результатом операции POST, но мне интересно, есть ли какие-либо способы обойти это.
Обходные пути, которые, как я думал, могут сработать:
В событии Page_Unload сохраните состояние представления в сеансе с уникальным идентификатором и перенаправьте пользователя на ту же страницу с уникальным идентификатором в качестве параметра строки запроса, после того как страница загрузится с уникальным идентификатором в URL, состояние представления будет загружено из сеанса и вводится в текущую страницу. Такой метод позволит пользователю обновлять страницу и всегда получать одинаковые результаты.
P.S.
Я понимаю, что могу использовать Response.Redirect()
и / или строки запроса, но я хочу использовать простоту ViewState