Цепочка наследования типа Page
Как вы только что убедились, готовый генерируемый класс, представляющий файл *.aspx, получается из System.Web.UI.Page. Подобно любому базовому классу, этот тип обеспечивает полиморфный интерфейс всем производным типам. Однако тип Page является не единственным членом в иерархии наследования. Если найти тип Page (в пределах компоновочного блока System.Web.dll) в окне обозреватели объектов Visual Studio 2005, то вы увидите, что этот тип "принадлежит" типу TemplateControl, который, в свою очередь, "принадлежит" Control, а последний "принадлежит" Object (рис. 23.18).
Вы должны догадываться, что каждый из этих базовых классов вносит в файл *.aspx свой "немалый вклад" в отношении функциональных возможностей. Для большинства проектов вы будете использовать члены, определенные в рамках родительских классов Page и Control. Вообще говоря, функциональные возможности, приобретенные от класса System.Web.UI.TemplateControl, могут представлять для вас интерес только при построении пользовательских элементов управления Web Form и при взаимодействии с процессом визуализации. С этими оговорками давайте рассмотрим роль типа Page.
Рис. 23.18. Происхождение страницы ASP.NET
Первым интересующим нас родительским классом является сам класс Page. Ниже описаны его многочисленные свойства, обеспечивающие возможность взаимодействия с различными Web-примитивами, такими как переменные приложения и сеанса, запросы и ответы HTTP, темы и т.д. Описания некоторых их этих свойств приводятся в табл. 23.4.
Таблица 23.4.Свойства типа Page
Свойство |
Описание |
Application |
Позволяет взаимодействовать с переменными приложения для текущего Web-узла |
Cache |
Позволяет взаимодействовать с объектом кэша для текущего Web-узла |
ClientTarget |
Позволяет указать способ визуализации для данной страницы в зависимости от запрашивающего браузера |
IsPostBack |
Получает значение, являющееся индикатором загрузки страницы в ответ на вторичный запрос клиента (в отличие от первичной загрузки страницы) |
MasterPageFile |
Создает шаблон страницы для текущей страницы |
Request |
Обеспечивает доступ к текущему HTTP-запросу |
Response |
Позволяет взаимодействовать с исходящим HTTP-ответом |
Server |
Обеспечивает доступ к объекту HttpServerUtility, содержащему различные вспомогательные функции сервера |
Session |
Позволяет взаимодействовать с сеансовыми данными для текущего вызывающего объекта |
Theme |
Получает или устанавливает имя темы, используемой для текущей страницы |
Trace |
Обеспечивает доступ к объекту TraceContext, позволяющему записывать пользовательские сообщения в ходе сеанса отладки |
Взаимодействие с поступающим HTTP-запросом
Вы уже видели выше, что основной поток Web-сеанса начинается с регистрации клиента, ввода пользовательской информации и щелчка на кнопке Отправить, в результате чего данные HTML-формы направляются Web-странице для обработки. В большинстве случаев открывающий дескриптор form содержит атрибуты action и method, указывающие файл на Web-сервере, который должен обеспечить данные различным HTML-элементам, и метод пересылки этих данных (GET или POST).
‹form name="defaultPage" id="defaultPage" action="http://localhost/Cars/ClassicAspPage.asp" method = "GET"›
‹/form›
В отличие от классической технологии ASP, в рамках ASP.NET объект с именем Request не поддерживается. Однако все страницы ASP.NET наследуют свойство System.Web.UI.Page.Request, обеспечивающее доступ к экземпляру типа класса HttpRequest. В табл. 23.5 предлагаются описания некоторых базовых членов указанного типа, и не удивительно, что эти члены предлагают возможности, аналогичные возможностям членов, присутствующих в уже устаревшем объекте Request классической модели ASP.
Таблица 23.5.Члены типа HttpRequest
Член |
Описание |
ApplicationPath |
Получает путь к виртуальному каталогу приложения ASP.NET на сервере |
Browser |
Обеспечивает информацию о возможностях браузера клиента |
Cookies |
Получает коллекцию файлов cookie, отправленных браузером клиента |
FilePath |
Указывает виртуальный путь текущего запроса |
Form |
Получает коллекцию переменных формы |
Headers |
Получает коллекцию HTTP-заголовков |
HttpMethod |
Указывает метод передачи HTTP-данных, используемый клиентом (GET, POST) |
IsSecureConnection |
Индикатор защищенности HTTP-соединения (т.е. использования HTTPS) |
QueryString |
Получает коллекцию строковых переменных HTTP-запроса |
RawUrl |
Получает "сырой" URL текущего запроса |
RequestType |
Указывает метод передачи HTTP-данных, используемый клиентом (GET, POST) |
ServerVariables |
Получает коллекцию переменных Web-сервера |
UserHostAddress |
Получает IP-адрес хоста удаленного клиента |
UserHostName |
Получает DNS-имя удаленного клиента |
В дополнение к этим свойствам тип HttpRequest предлагает ряд полезных методов, включая следующие.
Читать дальше