Серверные веб-элементы управления ASP.NET и возможности обозревателей

Обновлен: Ноябрь 2007

Различные обозреватели, как и версии одного обозревателя, поддерживают различные функции. Серверные элементы управления ASP.NET автоматически определяют обозреватель, который запрашивает страницу, и предоставляют разметку, соответствующую этому обозревателю. Тем не менее, некоторые функциональные возможности элементов управления не работают в более старых версиях обозревателей, поэтому рекомендуется проверять страницы в максимально возможном количестве разных типов обозревателей, чтобы убедиться, что во всех обозревателях страницы выглядят надлежащим образом.

Автоматическое определение типов обозревателей

По умолчанию платформа веб-страниц ASP.NET определяет возможности обозревателя путем чтения сведений агента пользователя, передаваемых от обозревателя на сервер во время запроса. (Эти сведения доступны через свойство UserAgent объекта HttpRequest.) Страница сопоставляет сведения агента пользователя с записями агента в файлах конфигурации и файлах определения обозревателей.

x3k2ssx2.alert_note(ru-ru,VS.90).gifПримечание.

Раздел browserCaps файлов конфигурации (имеющих расширение CONFIG) в платформе .NET Framework 2.0 устарел. С целью обеспечения обратной совместимости параметры этого раздела по-прежнему действуют, если установлены на уровне приложения. Но они объединяются с данными, которые содержатся в файлах определения обозревателей (имеющих расширение BROWSER), расположенных в папке уровня компьютера %SystemRoot%\Microsoft.NET\Framework\номер_версии\CONFIG\Browsers и во всех существующих папках уровня приложения App_Browser. Дополнительные сведения см. в разделе Схема файла определения веб-обозревателя (элемент browsers).

После того, как обнаружено, что текущий агент пользователя соответствует одному из описываемых файлами агентов, зачитываются сведения о соответствующих возможностях обозревателя, например, поддерживает ли он сценарии, стили, фреймы и т.д. На основе этих возможностей элементы управления страницы отображаются на веб-элементы управления, используя соответствующую разметку — XHTML, HTML 3.2 и т.д. При создании платформой ASP.NET кода HTML определяется, какую версию HTML-элементов использовать: последнюю (совместимую с каскадными таблицами стилей CSS) или более раннюю (несовместимую с CSS). Для старых версий обозревателей ASP.NET представляет данные форматирования не с помощью стилей CSS, а через элементы (например, font).

Переопределение автоматически устанавливаемого типа обозревателя

Если необходимо в явном виде управлять отрисовкой страницы, то вместо того, чтобы полагаться на автоматическое определение типа обозревателя, необходимо задать свойство страницы ClientTarget. Это свойство можно установить либо программно, либо декларативно в качестве атрибута директивы @ Page для данной страницы.

Значение свойства ClientTarget является псевдонимом того типа обозревателя, в котором предпочтительнее отображать страницу. Например, чтобы установить принудительную отрисовку для Microsoft Internet Explorer 6.0, можно использовать псевдоним uplevel. Псевдоним должен быть определен в разделе clientTarget файла конфигурации. Предопределенными по умолчанию являются псевдонимы ie5, ie4, uplevel и downlevel.

При задании псевдонима downlevel устанавливается принудительное использование элементов, совместимых с HTML 3.2, вне зависимости от типа обозревателя, запросившего страницу. Аналогично, указание псевдонима uplevel приведет к тому, что страница будет использовать атрибуты стилей CSS даже для старых версий обозревателей.

Дополнительные псевдонимы создаются путем определения их в файле Machine.config или Web.config, что позволяет создавать пользовательские определения обозревателей. Дополнительные сведения см. в разделе Параметры конфигурации ASP.NET.

Функции и элементы управления ASP.NET с поддержкой AJAX

Функциональные возможности AJAX, предоставляемые ASP.NET, совместимы с большинством современных обозревателей и работают с параметрами безопасности по умолчанию для этих обозревателей. Функциям и элементам управления с поддержкой AJAX требуется, чтобы обозреватель мог выполнять клиентские сценарии. Примеры элементов управления с поддержкой AJAX — UpdatePanel и ScriptManager. Список совместимых обозревателей и рекомендуемые параметры безопасности для функций и элементов управления AJAX приведены в разделе Выбор параметров безопасности для страниц ASP.NET с поддержкой AJAX.

x3k2ssx2.alert_note(ru-ru,VS.90).gifПримечание.

Чтобы определить, поддерживает ли обозреватель ECMAScript (JScript, JavaScript), можно использовать свойства, предоставляемые объектом HttpBrowserCapabilities.

Общие сведения о функциональных возможностях AJAX в ASP.NET см. в разделе Добавление клиентских возможностей и возможностей AJAX.

Клиентский сценарий

Некоторые функциональные возможности серверных элементов управления ASP.NET зависят от возможности выполнения клиентских сценариев. Клиентский сценарий создается автоматически и отправляется как часть страницы, если обозреватель может выполнять сценарии. И даже в том случае, если пользователи отключили выполнение сценариев в обозревателе, вследствие чего они не смогут полноценно использовать возможности элементов управления. Дополнительные сведения см. в разделе Клиентский сценарий на веб-страницах ASP.NET.

Работа с более ранними версиями обозревателей

Обозреватели подразделяются на две группы, называемых обозревателями поздних версий и обозревателями ранних версий. Эти группы определяют тип поддержки, предлагаемой обозревателем, и определяют в целом представление и поведение веб-страницы.

Обозреватели поздних версий обычно поддерживают следующие возможности:

  • ECMAScript (JScript, JavaScript) версии 1.2.

  • HTML версии 4.0.

  • Microsoft Document Object Model (MSDOM).

  • Каскадные таблицы стилей CSS.

Обозреватели ранних версий и клиентские устройства поддерживают только

  • HTML версии 3.2.

Свойства серверных элементов управления, представленные в следующей таблице, интерпретируются различно в обозревателях ранних и поздних версий.

Свойство серверного элемента управления

Поведение отрисовки в обозревателях ранних и поздних версий

AccessKey

Это свойство в обозревателях ранних версий не работает ни для каких элементов управления. Оно определено в HTML 4.0, и работает только в Internet Explorer 4.0 и более поздних версиях.

BackColor

В обозревателях ранних версий это свойство работает только для следующих элементов управления: Table, Panel, GridView, Calendar и ValidationSummary. Оно также работает для элементов управления CheckBoxListRadioButtonList и DataList, если они размещены в элементе управления Table. Только элементы управления, которые интерпретируются как HTML-элемент table, могут иметь в HTML 3.2 цвет фона, тогда как в HTML 4.0 — почти все. Для элементов управления, которые отображают HTML-элементы span в режиме разметки Flow, в том числе элементов управления Label, проверяющих элементов управления и элементов управления «Список», свойство BackColor работает в Internet Explorer 5 и более поздних версиях, но не работает в Internet Explorer 4.0.

BorderColor

В обозревателях ранних версий это свойство работает для тех же элементов управления на основе таблиц, что и свойство BackColor. Тем не менее, оно представляется атрибутом bordercolor, который не является частью стандарта HTML 3.2. Некоторые обозреватели (но не все) поддерживают этот атрибут, в том числе Internet Explorer 3.0 и более поздние версии.

BorderStyle

Это свойство не работает в обозревателях ранних версий. В HTML 3.2 нет эквивалента данного свойства.

BorderWidth

Это свойство работает только в элементах управления, которые интерпретируются как HTML-элемент table (Table, PanelGridView и Calendar) или как HTML-элемент img (Image, AdRotator). Свойство BorderWidth работает в обозревателях ранних версий, только если его значение указано в точках; в противном случае оно всегда представляется как border=1 или border=0. Также свойство BorderWidth работает только с элементами управления на основе таблиц, если атрибуту GridLines присвоено значение, отличное от None. Это объясняется тем, что без использования сетки невозможно указать границу в HTML 3.2. Для элементов управления, которые отображают HTML-элементы span в режиме разметки Flow, в том числе элементов управления Label проверяющих элементов управления и элементов управления «Список», свойство BorderWidth работает в Internet Explorer 5 и более поздних версиях, но не работает в Internet Explorer 4.0.

CssClass

Это свойство всегда отображается на атрибут class, независимо от версии обозревателя. Большинство обозревателей поздних версий распознают атрибут class.

Enabled

Это свойство указывает, вызываются ли события и функции данного элемента управления. В Internet Explorer 4.0 и более поздних версиях задание для свойства Enabled значения false отображается на команду disabled=true — элемент управления становится недоступным и заблокированным от ввода данных.

Font-Bold, Font-Italic, Font-Strikeout и аналогичные свойства

Для обозревателей поздних версий эти свойства отображаются на атрибуты style (например, Font-Weight для полужирного и Font-Style для курсива), а для обозревателей ранних версий — на независимые элементы (например, b и i).

Font-Size

Это свойство работает в обозревателях ранних версий для всех элементов управления только при условии, что используются именованные размеры шрифта (Small, Smaller и т.д.). В обозревателях поздних версий это свойство отображается на атрибут style, а в обозревателях ранних версий — на элемент font.

Font-Overline

Это свойство не работает ни в одном из обозревателей ранних версий.

ForeColor

Это свойство работает в обозревателях ранних версий для всех элементов управления, кроме Image, AdRotatorHyperLink и LinkButton. Для обозревателей ранних версий свойство ForeColor представляется с помощью HTML-элементов font.

Height

В обозревателях ранних версий это свойство не работает для элементов управления Label, HyperLink, LinkButton и проверяющих элементов управления. Свойство Height также не работает для элементов управления CheckBoxList, RadioButtonList и DataList, если для этих элементов управления установлен режим разметки Flow. Допустимы только единицы измерения в точках и процентах.

Для обозревателей ранних версий высота внутренних таблиц в элементах управления на основе таблиц не отображается на какой-либо из атрибутов, потому что атрибут Height объявлен устаревшим в спецификации HTML 4.01. Вследствие этого внешний вид таблиц в обозревателях ранних и поздних версий немного отличается. Наиболее заметное отличие возникает, если для свойства SideBarStyle установлен атрибут BackColor: в обозревателях поздних версий цвет фона BackColor заполняет данный столбец по всей его длине, а в обозревателях ранних версий он заполняет только область текстовых кнопок.

TabIndex

Это свойство в обозревателях ранних версий не работает ни для каких элементов управления. Оно определено в HTML 4.0 и работает только в Internet Explorer 4.0 и более поздних версиях.

ToolTip

Это свойство не работает в обозревателях ранних версий.

Width

Это свойство не работает в обозревателях ранних версий для элементов управления Label, HyperLink, LinkButton и проверяющих элементов управления. Также свойство Width не работает для элементов управления CheckBoxListRadioButtonList и DataList, если установлен режим разметки Flow. Допустимы только единицы измерения в точках и процентах.

См. также

Задачи

Практическое руководство. Определение типов обозревателей на веб-страницах ASP.NET

Пошаговое руководство. Создание и использование пользовательского серверного элемента управления

Ссылки

ClientTarget

Элемент clientTarget (схема параметров ASP.NET)

HttpBrowserCapabilities

Browser

UserAgent

WebControl

Другие ресурсы

Программирование веб-страниц ASP.NET

Разработка пользовательских серверных элементов управления ASP.NET