Обработка страницы
Пример программы
Чтобы продемонстрировать отдельные возможности, которые используются при обработке страниц, мы расширим нашу программу Echo (Эхо). Сборка Hello-Page имеет ряд обработчиков событий страницы. Для записи простого текста в выходной поток используется свойство Response (Ответ). После возникновения каждого события мы отображаем текущий текст в элементах управления сервера txtName и IblGreeting. Обработчик события Load (Загрузка) выводит текущее значение свойства IsPostBack. Если страница запрашивается впервые, свойство IsPostBack имеет значение false (ложь). Если же страница запрашивается повторно, оно принимает значение true (истина).
<! – HelloPage.aspx – > <-d@ Assembly Name = "HelloPage" %> <V:P Page Inherits=MyHelloPage %> <HTML> < HEAD> </HEAD> <BODY> <! – ТЕЛО – > <FORK RUNAT="SERVER">Your name: <asp:textbox id=txtName Runat="server"> </asp:textbox> <p><asp: button id=cmdEcho onclick=cmdEcho_Click Text="Echo" runat-"server" tooitip="Click to echo your name"> <! – подсказка – > </a.-;p: bu11оn></p> Greeting runat = "server "></asp: label> </FORMi> </Body> <! – тело – > </HTML>
В.aspx-файле, который приведен выше, имеется ссылка на сборку HelloPage. Названная сборка содержит класс MyHelloPage. В этом файле также указано, что класс Page (Страница) является производным от класса MyHelloPage. Это означает, что события данной страницы обрабатываются методами класса MyHelloPage.
Если страница запрашивается впервые, текстовые поля и подписи не содержат никаких значений, поскольку никакой информации в форму мы еще не вводили. Свойство IsPostBack имеет значение false (ложь). Теперь введите имя Robert (Роберт), и щелкните на кнопке Echo (Эхо). Обработчики событий страницы выведут следующую информацию:
Page_Init txtName = IblGreeting = Page_Load IsPostBack = True // Истина txtName = Robert // Роберт iblGreeting = Page_PreRender txtName = Robert // Роберт IblGreeting = Hello, Robert. Welcome again // Привет, Роберт. Добро пожаловать снова
В функции Page_Init элементы управления не содержат никаких данных, поскольку состояние представления на этапе инициализации страницы не доступно. В функции Page_Load текстовое поле содержит данные. Надпись не содержит никаких данных, так как обработчик события (щелчка мыши) еще не вызван. Свойство IsPostBack теперь имеет значение true (истина). В функции Page_PreRender оба элемента управления содержат данные.
Щелкните на кнопке Echo (Эхо) еще раз. Данные в элементах управления функции Page_Init опять отсутствуют. А вот в функции Page_Load оба элемента управления используют данные состояния представления. На рис. 10.9 представлено окно браузера, в котором отображено то, что после второго щелчка на кнопке Echo (Эхо) вывели обработчики события страницы.