Architecture Net

       

Обработка страницы


Страница совместно обрабатывается Web-сервером, средой выполнения ASP NET и написанным вами кодом. Класс Page (Страница) содержит ряд событий, с помощью которых можно управлять обработкой страницы. При этом также можно использовать свойства и методы класса Page (Страница). В данной главе возможности класса Page (Страница) будут проиллюстрированы на примере программ Мы рассмотрим лишь некоторые основные возможности. Для получения исчерпывающих сведений обратитесь к описанию каркаса .NET Framework.

События страницы

В процессе стандартной обработки страницы на сервере происходит ряд событий. Фактически эти события определены в базовом классе Control (Элемент управления), и, таким образом, могут быть вызваны также элементами управления сервера. Ниже приведены наиболее значимые события.

  • Init (Инициализация). Событие возникает на первом этапе жизненного цикла страницы, при ее инициализации Информация о состоянии элементов управления еще отсутствует.
  • Load (Загрузка) Событие возникает на этапе загрузки элементов управления в страницу. На данном этапе уже имеется информация о состоянии представления этих элементов управления.
  • PreRender (Предвыполнение). Событие возникает непосредственно перед воспроизведением (отображением) элементов управления в выходном потоке. Как правило, страница это событие не обрабатывает Тем не менее, оно имеет важное значения для реализации ваших собственных элементов управления сервера.
  • Unload (Разгрузка). Событие возникает тогда, когда элементы управления выгружаются из страницы Записывать ваши собственные данные в выходной поток теперь уже поздно.
  • Свойства страницы

    Класс Page (Страница) имеет ряд важных свойств. Некоторые наиболее полезные свойства приведены ниже.

  • EnableViewState. Указывает, разрешено ли сохранение состояния представления самой страницы и ее элементов управления Можно получить или установить значение этого свойства. По умолчанию оно принимает значение true (истина), т.е. сохранение состояния разрешено
  • ErrorPage. Указывает страницу, на которую будет перенаправлен броузер, если возникнет непредвиденная исключительная ситуация.

  • IsPostBack. Указывает, загружается страница впервые или повторно.




  • I sValid. Указывает, была ли успешной проверка правильности страницы


  • Request (Запрос). Получает HTTP-объект Request (Запрос), который предоставляет доступ к данным входных запросов, поступающих по протоколу передачи гипертекстовых файлов HTTP.


  • Response (Ответ). Получает HTTP-объект Response (Ответ), который отсылает запрошенные данные броузеру.


  • Session (Сеанс). Получает текущий объект Session (Сеанс), в котором ASP.NET хранит состояние сеанса.


  • Trace (Трассировка). Получает объект TraceContext страницы. В этот объект записывается трассировочная информация.


  • Пример программы

    Чтобы продемонстрировать отдельные возможности, которые используются при обработке страниц, мы расширим нашу программу 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:&nbsp;
    <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. В этом файле также указано, что класс r.vj'.' (Страница) является производным от класса 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 (Эхо) вывели обработчики события страницы.



    Рис. 10.9. Вывод броузера после второго щелчка на кнопке Echo (Эхо)

    Директива Page (Страница) и директива Assembly (Сборка)

    Файл с расширением . aspx может содержать директиву Assembly (Сборка) и директиву Page (Страница). Директива Assembly (Сборка) связывает уже существующую скомпилированную сборку с текущей страницей. Директива Page (Страница) определяет различные атрибуты, которые управляют обработкой ASP.NET-страницы. Каждая директива содержит одну или несколько пар атрибут/значение. Синтаксис директивы Assembly (Сборка) и директивы Page (Страница) приведен ниже.

    <@ Assembly Name="HelloCodebehind" @>
    <@ Page Inherits=MyWebPage @>

    Программа HelloCodebehind.aspx служит примером .aspx-страницы, в которой отсутствует код сценария. Если использовать другие языки программирования, например, С# или VB.NET, сценарий можно вложить непосредственно в . aspx-файл. В таком случае использовать директиву Assembly (Сборка) нет необходимости. Указанные языки программирования также позволяют использовать файлы с фоновым исходным кодом. Для этого в директиве Page (Страница) используется атрибут Src, который указывает на нескомпилированный исходный файл. Язык C++ такие возможности не поддерживает. Если используется язык C++, директива Assembly (Сборка) должна содержать атрибут Name (Имя), который идентифицирует скомпилированную сборку. При помощи атрибута Inherits (Наследуется) указывается класс, производный от класса Page (Страница), производным от которого в свою очередь является класс данной . aspx-страницы.

    CompEbook.ru Железо, дизайн, обучение и другие


    Содержание раздела