Почему мой отладчик говорит мне, что ViewState.Count = 0, когда ViewState очень большой? - PullRequest
1 голос
/ 13 сентября 2011

Я работаю над страницей ASP.net с GridView.У меня проблема в том, что ViewState очень большой.

Я хотел бы выяснить, как настроить мой GridView для размещения меньшего количества данных во ViewState, но первая проблема, с которой я столкнулся, заключается в том, что я не вижучто находится во ViewState.

Я пытался поместить точки останова в различные точки в коде страницы (включая Page_Load и gridview_PageIndexChanging).В каждой точке останова я нахожу, что ViewState.Count равен 0.

Почему мой ViewState кажется пустым, когда он на самом деле очень большой?

1 Ответ

2 голосов
/ 13 сентября 2011

В asp.net каждый элемент управления поддерживает свое собственное состояние просмотра.Когда вы проверяете ViewState.Count внутри событий вашей страницы, вы проверяете пакет состояний для свойств представления вашей страницы.

Если у вас есть какие-либо свойства, такие как ViewState["test"] = value в классе страницы, вы увидитерассчитывать на это.Вы не сможете увидеть состояние просмотра gridview из класса вашей страницы.Счетчик состояния просмотра на вашей странице пуст, потому что у вас нет свойств, добавленных в состояние просмотра.

Но когда браузер отображает страницу, вся информация о состоянии просмотра для страницы и ее элементов управления помещается в скрытую переменную для viewstate.

Чтобы поместить меньше данных для вашего gridview в viewstate,придется делать пейджинг.Если его разбить на страницы, gridview помещает viewstate только для видимых строк, что должно быть минимальным.Если вы хотите полностью отключить viewstate для gridview, вы можете сделать enableviewstate="false" или viewstatemode (.net 4.0) для элемента управления gridview и привязать данные при каждой загрузке страницы, включая обратную передачу.

...