Каждый раз, когда страница отправляется обратно, она, по сути, начинается с нуля - например, все, что инициализируется значением 0, снова будет равно нулю. Это связано с тем, что сервер ничего не знает о последнем запуске страницы - все, что он знает, - это то, что вы нажали кнопку, которая отправляет форму на эту страницу, поэтому он создает другой экземпляр страницы и запускается снова.
Если вам нужно сохранить значение в постбэках, стандартным методом является использование ViewState :
Public Property MyCounter() As Integer
Get
Dim val As Object = ViewState("MyCounter")
Return If(val IsNot Nothing, CInt(val), 0)
End Get
Set(ByVal value As Integer)
ViewState("MyCounter") = value
End Set
End Property
Также возможно использовать Session, который сохранит значение на всех страницах и запросы на время жизни сеанса пользователя. Чтобы это работало, вы можете использовать тот же пример выше, заменив ViewState
на Session
.