Это связано с тем, как вы обрабатываете PostBacks .
Необходим небольшой фон:
Сеть "не имеет состояния", что означает, что каждый запрос от клиента к серверу не зависит от запроса до него или запроса после него. Там нет "государства" поддерживается. Если вы посмотрите на уровень HTTP, то это просто текстовое пятно, отправленное на сервер с надписью «пришлите мне эту информацию», и сервер отправит ее обратно. Там нет «Я тот же пользователь, который был здесь 3 минуты назад, и я хотел бы перейти на следующую страницу с той, на которой я был в прошлый раз, когда мы говорили».
ASP.NET решает эту проблему с помощью ViewState и обратных передач. Каждый раз, когда вы нажимаете кнопку ASP.NET, она фактически отправляет форму, в которой есть скрытое поле с кучей закодированных данных. Эти данные содержат всю информации, необходимой серверу для «восстановления» состояния страницы в том виде, в котором оно было в последний раз. Затем он может выполнить «перейти на следующую страницу», и эта команда имеет смысл. Когда ASP.NET отправляет HTML обратно клиенту, он обновляет это скрытое поле новыми данными, снова представляя состояние страницы, как сейчас. И в следующий раз, когда вы нажимаете любую кнопку, данные отправляются снова, страница восстанавливается снова и цикл повторяется.
Когда пользователь нажимает кнопку «обновить», браузер спрашивает его, хотят ли они повторно отправить форму. Они повторно отправляют те же данные, что и в прошлый раз.
Последствия для вас:
Если вы пытаетесь отслеживать какие-либо данные о пользователе или о том, что он делает независимо от ASP.NET ViewState, вам нужно будет синхронизировать его каждый раз, когда обрабатывается страница.
Возможно, вы хотите сохранить "текущую страницу" в ViewState:
ViewState.Add("CurrentPage", intCurrentPage);
Поэтому, когда вы вызываете обработчик события MoveNext
, вы можете быть уверены, что перемещаетесь относительно страницы, как это было в последний раз, когда она была отправлена клиенту.