Основы ASP.NET 2.0



         

ViewState - часть 2


И те, и другие читаются из тела запроса POST. Перед событием Render состояние отображения вновь записывается с помощью функции SaveViewState. Функция SaveViewState объекта рекурсивно вызывает ее же вложенных в нее элементов. При этом эта информация кодируется по алгоритму base-64. Во время отрисовки страницы создается скрытый элемент __VIEWSTATE. Следовательно, во время события Load или в обработчиках событий элементов управления можно изменять свойства страницы или любых ее элементов.

Свойство ViewState есть как у страницы, так и у всех элементов управления на ней.

Пусть у нас есть простая форма:

<form id="form1" runat="server"> <asp:Label ID="Label1" runat="server" ></asp:Label><br /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Get Time" /><br /> <asp:Button ID="Button2" runat="server" Text="Button" /> </form>

Во время первой загрузки страницы ничего связанного с сохранением состояния не происходит.

При нажатии на первую кнопку динамически меняется текст метки. Кнопка вызывает отправку данных на сервер, и во время второго жизненного цикла выполняется функция RaisePostBackEvent, которая вызывает обработчик:

protected void Button1_Click(object sender, EventArgs e) { Label1.Text = DateTime.Now.ToLongTimeString(); }

Измененное состояние метки сохраняется в свойстве ViewState. Если теперь нажать на вторую кнопку, то сразу после инициализации страницы в текст метки будет загружаться текст, сохраненный в ViewState.




Содержание  Назад  Вперед