Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции OOP c#.doc
Скачиваний:
44
Добавлен:
22.09.2019
Размер:
3.38 Mб
Скачать

5.3. Директивы страницы

Директивы страницы используются для настройки страницы. Как правило, при помощи директив выполняются такие операции, которым в «традиционном» программировании соответствуют настройка опций компилятора, подключение сборок и пространств имен, установка свойств определенных классов и т. п. Рассмотрим возможные директивы страницы.

@Page

При помощи директивы @Page устанавливаются самые важные настроечные параметры страницы. Директива имеет множество атрибуты, которые перечислены в таблице 37 (выделены значения атрибутов по умолчанию):

Таблица 37

Атрибуты директивы @Page

Имя атрибута

Возможные

значения

Описание

AspCompat

True

False

Устанавливает выполнение страницы в однопоточном апартменте. Позволяет обращаться к COM-компонентам, разработанным в VB (которые могли быть только STA-компонентами)

AutoEventWireup

True

False

Указывает, выполняется ли автоматическое связывание событий страницы с методами, имеющими специфичные имена (например, Page_Load)

Buffer

True

False

Разрешает буферизацию ответа. При включенной буферизации выходной поток страницы сначала записывается в память на сервере, а отсылается клиенту полностью сформированным

ClassName

Имя класса

Имя для класса страницы. По умолчанию имя файла страницы, в котором точка между именем и расширением aspx заменена символом подчеркивания

ClientTarget

Имя User Agent

Указывает браузер, на который ориентирована страница.

CodePage

Имя кодовой страницы

Имя кодовой страницы, в кодировке которой пользователю посылается ответ

CompilerOptions

Допустимые опции компилятора

Опции компилятора; аналоги опций, передаваемых компилятору командной строки

ContentType

Допустимый MIME-тип

Указывает на тип содержимого ответа. Атрибут используется, когда возвращаемое значение отличается от text/html (например, ответ сервера – изображение)

Culture

Идентификатор культуры

Идентификатор культуры устанавливает язык и форматы записи дат, чисел и т. п. Например, идентификатор культуры для американского английского – en-US (используется по умолчанию)

Debug

True

False

Атрибут указывает, компилировать ли страницу с отладочной информацией

Description

Любой текст

Описание страницы – игнорируется в ASP.NET

EnableSessionState

True

False

ReadOnly

Показывает, имеет ли страница доступ к состоянию сеанса (объекту Session). В случае ReadOnly состояние сеанса доступно только для чтения

EnableViewState

True

False

Поддерживает ли страница сохранение состояния для серверных элементов управления

ErrorPage

Допустимый URL

Страница для переадресации при возникновении необработанной ошибки

Explicit

True

False

Используется режим VB.NET Option Explicit

Inherits

Имя класса (возможно, с пространством имен)

Указывает пространство имен (опционно) и имя класса, от которого будет наследоваться класс страницы. Атрибут используется совместно с атрибутом Src

Language

Имя языка .NET

Язык программирования, который применяется для блоков серверного и рендерного кода. Обычно используются значения VB и C#. Атрибут Language может быть записан в серверном тэге <script>. ASP.NET поддерживает только один язык на странице

LCID

Допустимый локальный идентификатор

Локальный идентификатор страницы, если он отличается от локального идентификатора web-сервера. Например, при LCID="1041" функция FormatCurrency возвращает значения, форматированные как японские йены (¥).

ResponseEncoding

Имя системы кодировки символов

Формат кодирования текста, отправляемого в ответ. По умолчанию – Unicode (UTF-8)

Src

Имя исходного файла

Путь и имя файла с исходным кодом класса, наследником которого является страница. Используется совместно с атрибутом Inherits

SmartNavigation

True

False

Разрешает или запрещает развитую навигацию. Развитая навигация поддерживается в IE версии 5.x и выше. Это средство загружает страницу в скрытое поле IFrame, а затем визуализирует только изменившиеся части страницы

Strict

True

False

Используется режим VB.NET Option Strict

Trace

True

False

Указывает на необходимость выполнять трассировку страницы. Трассировка заключается в выводе в нижней части страницы различной дополнительной информации и может быть полезна при отладке

TraceMode

SortByTime

SortByCategory

При включенной трассировке – порядок сортировки сообщений (по времени или по категории)

Transaction

Disabled

NotSupported

Supported

Required

RequiresNew

Задает установки транзакции для страницы

ValidateRequest

True

False

Указывает, производится ли проверка запроса. Проверка заключается в контроле всех передаваемых данных на потенциально опасные значения, к которым отнесены код HTML и скриптов. Если опасные значения выявлены, генерируется HttpRequestValidationException

WarningLevel

0, 1, 2, 3, 4

Указывает уровень предупреждений копилятора, при котором компиляция страницы прекращается

@Control

Данная директива обладает функциональностью, схожей с директивой @Page, но используется для пользовательских элементов ASP.NET. Атрибуты, доступные в директиве @Control, образуют подмножество атрибутов директивы @Page: AutoEventWireup, ClassName, CompilerOptions, Debug, Description, EnableViewState, Explicit, Inherits, Language, Strict, Src, WarningLevel.

@Import

Директива используется для импорта пространств имен для страницы. Это делает доступным на странице все классы и интерфейсы из импортированного пространства. Пример использования директивы:

<%@Import Namespace="BSUIR" %>

Одна директива @Import позволяет импортировать одно пространство имен, поэтому для импортирования нескольких пространств надо соответствующее количество директив. Платформа .NET при работе с ASP.NET автоматически импортирует следующие пространства имен:

System

System.Web

System.Collections

System.Web.Caching

System.Collections.Specialized

System.Web.Security

System.Configuration

System.Web.SessionState

System.IO

System.Web.UI

System.Text

System.Web.UI.HtmlControls

System.Text.RegularExpressions

System.Web.UI.WebControls

@Implements

Директива @Implements позволяет реализовать на странице интерфейс. При реализации интерфейса вы сообщаете, что страница будет поддерживать определенные свойства, методы и события (аналогично реализации интерфейса в классе). В следующем примере указано, что страница реализует интерфейс IPostBackEventHandler:

<%@Implements Interface="System.Web.UI.IPostBackEventHandler" %>

@Register

Данная директива используется при добавлении на страницу индивидуального серверного элемента управления для сообщения компилятору информации об этом элементе. Существуют две формы директивы @Register:

<%@Register TagPrefix="tagprefix"

TagName="tagname" Src="pathname" %>

<%@Register TagPrefix="tagprefix" Namespace="namespace"

Assembly="assembly" %>

Первая форма используется, когда серверный элемент представлен в виде исходного текста, вторая – для ссылки на пространство имен скомпилированных серверных элементов. Атрибут TagPrefix задает префикс для пользовательских элементов на странице. Например, пусть задана следующая директива @Register:

<%@Register TagPrefix="Ecommerce" TagName="Header"

Src="UserControls\Header.ascx" %>

Тогда перед каждым экземпляром элемента Header на странице указывается префикс Ecommerce:

<Ecommerce:Header id="Header" runat="server"/>

Атрибут TagName задает имя, которое будет употребляться для ссылки на пользовательский элемент на странице. Атрибут Src определяет имя файла с пользовательским элементом. В случае использования второй формы директивы @Register, атрибуты Namespace и Assembly определяют пространство имен и сборку, содержащую пользовательский элемент:

<%@Register TagPrefix="Wrox" Namespace="WroxControls"

Assembly="RatingMeter" %>

Следуя примеру, для указания на странице некоего элемента управления из сборки RatingMeter необходимо будет указать тэг <Wrox:имя_элемента>.

@Assembly

Эта директива используется для непосредственной ссылки на сборку, с тем чтобы содержащиеся в ней классы и интерфейсы стали доступны коду на странице. Можно передать имя скомпилированной сборки

<%@ Assembly Name="имя сборки" %>

или путь к исходному файлу, который будет компилироваться при компиляции страницы:

<%@ Assembly Src="путь" %>

Этот тэг обычно не требуется, так как любая сборка, находящаяся в каталоге bin приложения ASP.NET, автоматически присоединяется к странице во время компиляции. Директива используется при подключении сборок из GAC или сборок из других каталогов

@OutputCache

Директива применяется для контроля кэширования страницы на сервере. Подробнее работа с директивой @OutputCache будет рассмотрена ниже.

@Reference

Данная директива позволяет динамически скомпилировать пользовательский элемент управления и поместить его в коллекцию Controls страницы или серверного элемента управления. Директива используется в соединении с методом Page.LoadControl().