Как правило, если вы хотите, чтобы ваши пользователи перемещались назад и вперед между страницами, я бы давал им ссылки на странице, выполняющей работу (без использования javascript:back()
), вместо использования навигации браузера.
Что происходит, скорее всего, так это то, что постбэки одной страницы иногда считаются страницами, иногда нет. Если пользовательское действие загружает страницу с тем же URI и строкой запроса, большинство браузеров считают, что «та же страница», даже если ВСЕ могло измениться. Обычно это происходит из-за интенсивного использования MultiViews с информацией о текущем представлении, хранящемся в ViewState или Session; навигация по этой странице не меняет URI, к которому осуществляется навигация, поэтому браузер не регистрирует каждую новую загрузку как уникальную.
Если вам действительно требуются надлежащие функции возврата и назад, вам необходимо убедиться, что каждая ссылка приведет к тому, что браузеру будет приказано перейти на другой URI, нежели текущая страница. Вы можете сделать это, добавив элемент строки запроса, который будет присутствовать в каждой ссылке на другой странице или в представлении, который будет автоматически увеличиваться при каждом щелчке пользователя. Это дает браузеру новый URI каждый раз. Вы используете только существующий элемент QueryString для создания нового в URI ваших ссылок. Это может быть громоздким, и более простое решение состоит в том, чтобы просто обеспечить навигацию по странице и запретить пользователям нажимать «Назад».