Это не ViewState, это просто время жизни экземпляра _Default
.
Вы создаете экземпляр класса Game
и сохраняете его как элемент страницы, и ожидаете, что этот экземпляр будетвыжить.Проблема в том, что экземпляр страницы не сохраняется.
Каждый запрос к странице приводит к созданию нового экземпляра класса _Default
, а при создании ответа экземплярвыброшенный.Ссылка на экземпляр класса Game
, который вы сохранили на странице, также отбрасывается, и вы теряете любой способ получить к нему доступ.
Если вы хотите сохранить экземпляр Game
класс, вы можете сохранить его в коллекции Session
, которая зависит от пользователя:
If Not Page.IsPostBack Then
'create a new instance of the game object on first loading page
_game = New Game(width, height, cellsToWin)
' store the reference in the user session
Session("game") = _game
Else
' get the reference back from the user session
_game = DirectCast(Session("game"), Game)
End If
Однако вы должны быть осторожны с тем, сколько вы храните в сеансе пользователя.Обычно объекты, создаваемые на странице, являются недолговечными (т. Е. Миллисекундами), поэтому они оказывают небольшое влияние на ресурсы сервера.Все, что вы храните в пользовательском сеансе, будет очень долгим в сравнении.Подумайте, насколько велик объект Game
, и действительно ли вам нужно сохранить весь объект или вы можете хранить только информацию, необходимую для его воссоздания для каждого запроса.