« Поставить закладку » « Сделать стартовой »

« Форумы » « Блоги » « Статьи » « Новости » « Файлы » « Realcoding IRC » « Site map » « Поиск »


Главная Главная
Анонсы Анонсы
Форумы Форумы
Каталог Каталог
Поиск Поиск
Опросы Опросы
Книжный магазин Книжный магазин
Реклама на сайте
Публикации Публикации
Партнеры Партнеры
Карта Карта сайта
Рассылки Рассылки
RSS экспорт
Настройки Настройки
О нас пишут О нас пишут
Контакты Контакты
Гостевая книга Гостевая книга



ПнВтСрЧтПтСбВс
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
    Популярное
Введение в язык Ассемблера

Правила

Заметки о системных таблицах InterBase

Функция AccessResource

Как запустить SQL запрос к MySQL из batch файла?

Delphi: Безбашенные Окна

Глава 15. Процедурный тип данных и функция eval.

Панели инструментов

Функция GetWindow

Оптимизация флэш-роликов




    Архив файлов



    Сообщества

    Документация

    Кто на сайте
Вы не зарегистрированы.
Имя:

Пароль:

Запомнить

Регистрация позволит Вам пользоваться дополнительными сервисами.
Сейчас на сайте:
Гостей: 171
Пользователей: 0

Статьи:: .NET Framework :: Учебник по ASP.NET :: Глава 3 Приложения ASP



отправить ссылку другу версия для печати  Обсудить на форуме

Глава 3 Приложения ASP



Здравствуй, мир
HTML-дизайн

Элементы Web Forms
Объект HttpResponse
Объект HttpRequest
Объект HttpApplicationState
Объект HttpServerUtility
Объект HttpSessionState
Формы
Работа с графикой
Работа с файлами
Работа с объектами HttpRequest и HttpResponse
Правила кэширования Web-страниц
Cookies
Стилевое оформление Web-страниц
Сеансы работы пользователей
Табличные компоненты
Аутентификация и авторизация пользователей
Использование электронной почты
Конфигурирование приложений
Отладка приложений

Здравствуй, мир

Попробуем создать свое первое ASP.NET-приложение. Теоретически мы могли бы воспользоваться для этого обычным текстовым редактором Блокнот, входящим в состав стандартной поставки Windows. Этого достаточно, если у нас есть функционирующий Web-сервер IIS и среда выполнения '".NET Framework. Однако среда разработки Visual Studio предоставляет действительно очень хорошие возможности для разработки приложений ASP.NET. Но перейдем к делу. После запуска Visual Studio .NET необходимо выполнить команду меню File | New | Project (Файл | Создать | Проект). Эта команда активизирует диалоговое окно New Project (Создать проект), показанное на рис. 3.1. Для того чтобы создать приложение ASP.NET, следует в группе Project Types (Типы проектов) выделить элемент с наименованием Visual Basic Projects (Проекты Visual Basic), в группе Templates (Шаблоны) выделить иконку с наименованием ASP.NET Web Application (Веб-приложение ASP.NET), а в поле ввода Name (Имя) указать наименование создаваемого проекта. При этом будет создан одноименный виртуальный каталог в файловом пространстве WWW-сервера. Наш первый проект мы назовем Hello, как это показано на рис. 3.1. После того, как все необходимые данные указаны, следует, естественно, нажать кнопку ОК.

Когда будет создан новый виртуальный каталог, в котором, кстати говоря, будут находиться все те же дополнительные папки, что и в корневом каталоге WWW-сервера, среда разработки Visual Studio .NET отобразит страницу с наименованием WebForml.aspx, присваиваемым по умолчанию. Это и есть основа для той Web-страницы, которую мы будем разрабатывать, и которую будет обслуживать создаваемое нами ASP.NET-приложение. Если вспомнить, что раньше ASP-разработчикам требовалось сначала создавать Web-страницу, а потом вручную привязывать к ней ASP-сценарии, так как практически не было редакторов, которые бы позволяли разрабатывать дизайн и движок одновременно, то становится понятно, что теперь разработчики получили возможность не только объединить код и дизайн в пределах одной страницы, но и совместить процессы разработки. Внешний вид среды разработки Visual Studio .NET с Web-страницей в режиме создания дизайна показан на рис. 3.2.

Рис. З.1. Диалоговое окно New Project

Рис. З.2. Внешний вид среды разработки Visual Studio .NET

Очевидно, что создаваемую Web-страницу мы можем видеть как в режиме дизайна, так и в виде HTML-кода. Переключение между двумя этими ипостасями производится при помощи вкладок Design и HTML, отображаемыми в нижней части окна, содержащего разрабатываемую Web-страницу. На первый взгляд, создание Web-страниц в подобном средстве разработки может показаться несколько неудобной, так как средства разметки явно уступают возможностям фаворитов WYSIWUG-редакторов для Web, таких как FrontPage или DreamVeawer. Однако, предполагается, что ASP-разработчик является достаточно квалифицированным специалистом и сможет разобраться, где находятся средства визуального проектирования Web-страниц (обычно они все находятся не дальше одного-двух уровней основного меню), и как подключать дополнительные технологии. Помимо стандарта HTML, поддерживаются, естественно, все языки создания сценариев, действующие на стороне пользователя, CSS, и, соответственно, сплав CSS языков сценариев и объектных моделей браузеров — технология, известная под именем DHTML.

Но перейдем все-таки к созданию своего приложения. Для начала следует активизировать набор компонентов для разработки Web-страниц с наименованием Toolbox (Инструментарий). Для этого следует или нажать одноименную кнопку на основной инструментальной панели, или выполнить команду View | Toolbox (Вид | Инструментарий), дублируемую комбинацией клавиш ++. При этом основное окно среды разработки Visual Studio .NET примет вид, показанный на рис. 3.3.

Рис. 3.3. Внешний вид основного окна среды разработки Visual Studio.NET с активизированным набором компонентов Toolbox ASP.NET

На панели инструментов ToolBox (Инструментарий) находится несколько вкладок с различными типами компонентов, которые мы можем использовать при разработке собственных Web-страниц. Основные элементы дизайна собраны на вкладке с наименованием HTML, но нас будет интересовать вкладка Web Forms (Web-формы). Дело в том, что элементы, расположенные на этой вкладке, несмотря на то, что они во многом дублируют элементы вкладки HTML, на самом деле имеют много большую функциональность. Они обладают собственными событиями и расширенным набором свойств. По сути дела, с использованием этих элементов Web Forms (Web-формы) мы можем разрабатывать свои Web-страницы точно в таком же стиле, как мы разрабатывали свои обычные исполняемые приложения в любой другой RAD-среде, такой, как Visual Basic, Visual C++ или Delphi.

Теоретически, для написания простейшего приложения, приветствующего окружающий мир, достаточно было воспользоваться одним компонентом Label, который отображает некий текст. Однако, это слишком тривиально. Мы попробуем еще и представиться окружающему миру. Для разработки подобного приложения нам потребуется одно поле текстового ввода (элемент с наименованием TextBox), надпись, приглашающая пользователя ввести свое имя, кнопка, подтверждающая окончание ввода текста (элемент Button), и еще одна надпись (элемент Label), при помощи которой мы и будем приветствовать мир. Все эти элементы надо просто перенести мышью с инструментальной панели на разрабатываемую страницу и расположить их в нужном порядке. После этого следует установить значения свойства Text, которые будут отображаться на элементах. Естественно, для элементов TextBoxi и Labei2 это свойство будет пустым. Внешний вид окна разработки Web-страницы после размещения всех компонент показан на рис. 3.4.

Сама страница тоже является объектом, который носит наименование document. Мы можем установить для него значение свойства title, которое будет отображаться в заголовке основного окна программы-браузера.

Теперь, после того, как мы разместили все необходимые компоненты, следует написать обработчик нажатия пользователем кнопки. Нам необходимо, чтобы после нажатия на кнопку было сформировано значение свойства Text элемента Label2 с учетом того текста, который был внесен пользователем в поле текстового ввода. Для создания обработчика события достаточно произвести двойной щелчок мышью на кнопке, нажатие на которую мы собираемся обрабатывать. После этого Visual Studio .NET сгенерирует новый файл с наименованием WebForml.aspx.vb, в котором будет находиться сам код ASP.NET-приложения. Также курсор автоматически будет установлен на функцию, обрабатывающую нажатие пользователем нашей кнопки. Нам останется лишь записать следующую строку кода: Label2.Text="3flpaBCTByu, мир! Меня зовут "+TextBoxl.Text

Рис. З.4. Внешний вид основного окна разработки Web-страницы с размещенными компонентами

Фактически в этом окне объявляется класс, который соответствует нашему ASP.NET-приложению, действующему на странице Web Form l.aspx. Полный вид этого объявления приведен в листинге 3.1.

Листинг 3.1

Public Class WebForml

Inherits System.Web.UI.Page

Protected WithEvents Labell As System.Web.Ul.WebControls.Label

Protected WithEvents TextBoxl As System.Web.Ul.WebControls.TextBox

Protected WithEvents Buttonl As System.Web.UI.WebControls.Button

Protected WithEvents Label2 As System.Web.UI.WebControls.Label

#Region " Web Form Designer Generated Code "

' This call is required by the Web Form Designer.

)> Private Sub InitializeComponent ( )

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init

'CODEGEN: This method call is required by the Web Form Designer

'Do not modify it using the code editor.

InitializeComponent( )

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'Put user code to initialize the page here

End Sub

Private Sub Buttonl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonl.Click

Labe 1 2.Text = "Здравствуй, мир! Меня зовут " + TextBox 1 .Text

End Sub

End Class

Из листинга легко заметить, что был создан не только обработчик нажатия пользователем на кнопку. Visual Studio .NET также автоматически создал обработчик события зафузки страницы. В нем мы могли бы разместить код, который бы выполнялся сразу после окончания зафузки страницы, но перед ее отображением в окне браузера. В данном случае нам это не нужно. Сам HTML-код созданной нами страницы приведен в листинге 3.2.

Листинг 3.2

<%@ Page Language="vb" AutoEventWireup="false"

Codebehind="WebForml.aspx.vb" Inherits="Hello.WebForml"%>

3дpaвствуй, мир

content="http://schemas.microsoft.com/intellisense/ie5">

S _POSITIONING="GridLayout">

POSITION: absolute; TOP: 23px"

runat="server">Введите свое имяs р: L а b е l >

POSITION: absolute; TOP: 21px"

runat="server">

POSITION: absolute; TOP: 67px"

runat="server" Text="OK"X/asp: Button>

POSITION: absolute; TOP: 114px"

runat="server" Width="369px" Height="19px"x/asp:Label>

Как видно, все созданные нами органы управления на странице были помещены в форму с параметром runat, который явно не входит в спецификацию HTML. Это и есть тег, обрабатываемый ASP-анализатором IIS. Также стоит обратить внимание на первую строку документа, заключенную в брекеты <% и %>. Эта строка и является опознавательным знаком, что страница является частью ASP.NET-приложения. Легко заметить, что в ее состав входит параметр Codebehind, значение которого указывает, в каком файле размещается код ASP.NET-приложения, связанного с этой страницей.

Итак, после того как мы создали обработчик нажатия кнопки пользователем, процесс разработки закончен. Осталось лишь откомпилировать наш К проект. Для этого стоит выполнить команду меню File | Build and Browse V, (Файл | Сборка и просмотр), дублируемую комбинацией клавиш +.

После этого созданное нами приложение будет скомпилировано и отображено в окне предварительного просмотра, которое является функциональным двойником браузера Internet Explorer. В этом же окне можно и проверить работоспособность приложения. Однако мы воспользуемся браузером Internet Explorer для того, чтобы увидеть действие нашего приложения. Если мы не изменяли наименование основной страницы и не устанавливали наименование локального хоста в IIS, оставив стандартное наименование localhost, то URL нашего первого ASP.NET-приложения будет выглядеть

следующим образом: http://localhost/Hello/WebForml.aspx.

Естественно, перед тем как просматривать Web-страницу с этим URL, следует все-таки откомпилировать наше приложение. На рис. 3.5 показано, как функционирует наше первое приложение ASP.NET в браузере Internet Explorer версии 6.0. При этом показан завершающий этап работы приложения, когда пользователь уже ввел свое имя в текстовое поле и нажал кнопку.

Что ж, наше первое приложение ASP.NET оказалось не так уж трудно разработать. Однако в реальной жизни нам, скорее всего, не придется создавать такие простые приложения. Все будет намного сложнее. А значит, и материала для изучения у нас еще предостаточно.

HTML-дизайн

Естественно, нет смысла использовать только элементы Web Forms для создания Web-страниц. Если нет нужды обрабатывать некие элементы в сценариях ASP.NET, всегда можно воспользоваться обычными элементами HTML, размещенными на одноименной вкладке панели Toolbox (Инструментарий). В этом разделе мы рассмотрим возможности дизайна Web-страниц с использованием чистого HTML.

Следует также помнить, что все элементы оформления Web-страниц, даже не входящие в состав Web Forms, в терминологии Visual Studio .NET являются объектами со своими свойствами и методами. При помощи свойств задаются параметры тегов, реализующих тот или иной элемент Web-страницы и их значения. Конечно, нет нужды рассматривать досконально весь список свойств и методов, на это есть оперативная справка, но вот основные и наиболее часто используемые методы мы рассмотрим.

Все, что в Web-странице находится между тегами и является объектом document. Часть свойств этого объекта отображена в окне Properties (Свойства). В этом окне собраны свойства, управляющие параметрами тега .

  • aLink. Позволяет устанавливать цвет, которым будут отображаться активные гиперссылки на Web-странице.
  • aspcompat. Данное свойство имеет всего два допустимых значения — True и False, т. е. это логическое свойство. Если разработчик использовал значение True, то код данного Web-приложения будет выполняться по правилам технологии ASP (а не ASP.NET), что позволит использовать в работе приложения компоненты, разработанные до внедрения ASP.NET, т. е. унаследованные из предыдущих проектов.
  • background. Значение данного свойства содержит URL графического изображения, которое будет использоваться в качестве фона для Web-страницы. О bgcolor. Свойство задает цвет фона страницы. По умолчанию цвет вводится как комбинация трех двузначных шестнадцатеричных чисел. Впрочем, можно воспользоваться специализированным диалоговым окном установки цвета Color Picker (Указатель цвета), которое активизируется при помощи дополнительной кнопки, размещенной в поле ввода значения свойства. Внешний вид этого диалогового окна показан на рис. 3.5. Легко заметить, что данное диалоговое окно содержит четыре вкладки. Разработчик может выбрать цвет одним из четырех способов. На вкладке Web Palette (Web-палитра) размещены цвета, входящие в стандартную палитру Web. Вкладка Named Colors (Наименования цветов) предлагает разработчику выбрать один из цветов, для которых установлены стандартные символьные наименования. Помимо стандартных шестнадцати поименованных цветов на вкладке находятся еще пятьдесят два цвета, для которых также введены символьные наименования. Следует помнить, что далеко не все браузеры могут использовать дополнительные символьные наименования цветов. Вкладка System Colors (Системные цвета) содержит цвета, определяемые установками операционной системы (например, цвет заголовка активного окна — Activecaption). В том случае, если разработчик не нашел необходимого ему цвета на первых трех вкладках, всегда можно воспользоваться вкладкой Custom Color (Настройка цвета), и при помощи трех ползунков, регулирующих насыщенность трех основных цветов (красный, зеленый, синий), установить нужный цвет.

Рис. З.5. Диалоговое окно Color Picker

  • bgProperties. Свойство задает параметры отображения фонового рисунка, а именно, указывает, будет ли изображение двигаться вместе с содержимым страницы при прокрутке с помощью скроллеров или будет зафиксировано в окне просмотра.
  • bottomMargin. Свойство устанавливает размеры нижнего поля Web-страницы.
  • charset. Свойство задает наименование кодировки символов, которая будет использоваться браузером при отображении документа. Учитывая тот факт, что приложение ASP.NET будет выполняться под управлением сервера IIS, и для адекватного отображения наиболее продвинутых возможностей оформления Web-страниц пользователю потребуется использовать браузер Internet Explorer, разработчику для создания русскоязычных Web-страниц имеет смысл использовать кодировку Cyrillic (Windows).
  • codeBehind. Свойство содержит наименование файла, в котором находится код ASP.NET-приложения, связанного с данной Web-страницей. Разработчик не имеет возможности напрямую изменять значение этого свойства в окне Properties (Свойства).
  • contentType. Свойство задает тип содержимого Web-страницы, указываемый в заголовке протокола HTTP.
  • debug. Логическое свойство. Его значение указывает, надлежит ли среде разработки внедрять в разрабатываемую Web-страницу специальные символьные последовательности, позволяющие производить отладку ASP.NET-приложения.
  • defauitciientscript. Данное свойство указывает, какой именно язык сценариев будет использоваться разработчиком данной страницы для их исполнения на стороне пользователя. Свойство имеет всего два допустимых значения — jscript и VBScript. Смысл этих значений достаточно прозрачен и не требует дополнительного разъяснения.
  • Description. Свойство содержит строку с кратким описанием разрабатываемой Web-страницы. Значение этого свойства помещается в тег <мета> с соответствующими параметрами и позволяет хранить дополнительную информацию, обрабатываемую поисковыми машинами.
  • dir. Свойство указывает направление чтения и, соответственно, вывода текста. Для большинства языков, в которых чтение идет слева направо, используется значение itr. В ином случае будет использовано значение rti.
  • enableSessionstate. Логическое свойство, указывающее, будет ли данная Web-страница поддерживать механизм сеансов работы пользователей. Более подробно об этой технологии сеансов работы (также называемых сессиями) будет рассказано в соответствующем разделе главы.
  • errorPage. Свойство содержит в качестве своего значения URL-страницу, которая будет посылаться пользователю в случае возникновения каких-либо ошибок или необработанных приложением исключений (что, в сущности, одно и то же).
  • keywords. Свойство содержит список ключевых слов, характеризующих содержимое разрабатываемой Web-страницы. Значение этого свойства также может использоваться поисковыми машинами.
  • language. Значение этого свойства указывает компилятору, какой язык использовался программистом при разработке приложения ASP.NET, связанного с данной Web-страницей.
  • leftMargin. Данное свойство устанавливает размер левого поля Web-страницы.
  • link. Свойство задает цвет, которым будут отображаться не посещенные еще пользователем гиперссылки.
  • pageLayout. Свойство задает порядок позиционирования элементов Web-страницы в окне просмотра. По умолчанию используется значение GridLayout, которое создает Web-страницы с использованием абсолютного позиционирования. К сожалению, директивы абсолютного позиционирования внедряются напрямую в HTML-код Web-страницы без использования технологии CSS, поэтому в некоторых браузерах, таких, как старые версии Netscape Communicator, позиционирование может не работать, и страница будет отображена неадекватно. Если же разработчик планирует использовать стандартную "мягкую" верстку Web-страницы, при которой место каждого элемента рассчитывается браузером на основе размеров окна просмотра и внутренней структуры страницы, следует воспользоваться значением FiowLayout.
  • responseEncoding. Свойство задает кодировку символов, которая будет использована сервером для создания Web-страницы, сгенерированной в ответ на действия пользователя с текущей страницей.
  • rightMargin. Свойство устанавливает размер правого поля разрабатываемой Web-страницы.
  • showGrid. Свойство логического типа, которое указывает, будет ли отображаться сетка позиционирования в режиме разработки дизайна страницы. Естественно, данное свойство никак не влияет на внешний вид Web-страницы в браузере пользователя. Свойство может иметь только два значения — True или False. Впрочем, для отображения или сокрытия сетки разметки в режиме дизайна Web-страницы при ее разработке всегда можно использовать кнопку Show Grid (Вывести сетку) на инструментальной панели Formatting (Разметка).
  • targetschema. Свойство указывает, какой именно вариант стандарта языка HTML будет использован при разработке Web-страниц. Соответственно, можно указать целевой браузер для Web-страниц. Свойство может принимать одно из трех предустановленных значений — internet Explorer 3.02/Navigator 3, Internet Explorer 5.0, Используемое по умолчанию, и Navigator 4.
  • text. Свойство задает цвет, которым по умолчанию будет отображаться текст на разрабатываемой Web-странице.
  • title. Свойство содержит в качестве значения текстовую строку, которая будет использована как наименование Web-страницы, отображаемое в строке заголовка программы-браузера.
  • topMargin. Свойство устанавливает размер верхнего поля разрабатываемой Web-страницы.
  • transaction. Свойство указывает, будет ли поддерживать создаваемая Web-страница механизм транзакций. Свойство может принимать одно из нескольких предустановленных значений. Значение Notsupported означает, что данная страница не будет поддерживать механизм транзакций вообще. Значение supported указывает, что страница может работать с транзакциями. Если разработчику необходимо, чтобы страница работала только в режиме обработки транзакций, следует использовать значение Required. В том случае, если при отображении страницы необходимо создавать новую транзакцию, стоит обратить внимание на значение RequiresNew. Если Web-страница входит в состав последовательности страниц, обрабатывающих транзакцию, но сама не должна каким-либо образом менять ее состояние, следует установить значение Disabled.
  • viink. Свойство задает цвет, которым будут отображаться пройденные пользователем гиперссылки.

Впрочем, большую часть свойств, которые связаны со свойствами именно HTML-документа, разработчик может задать при помощи диалогового окна DOCUMENT Property Pages (Свойства документа), которое активизируется после выполнения команды меню View | Property Pages (Вид | Страницы свойств). Внешний вид этого окна показан на рис. 3.6.

Как видно, данное диалоговое окно содержит три вкладки. Вкладка General (Общие) содержит органы управления для задания общих свойств разрабатываемой Web-страницы. Все органы управления для установки различных цветов элементов оформления Web-страницы и полей документа собраны на вкладке Color and Margins (Цвет и границы). А ключевые слова, характеризующие содержимое Web-страницы, размещаются на вкладке Keywords (Ключевые слова).

Теперь перейдем к элементам, расположенным на вкладке HTML панели Toolbox (Инструментарий). Они, естественно, имеют несколько меньше свойств, нежели только что рассмотренный нами объект document, причем некоторые свойства присущи всем элементам, поэтому мы будем рассматривать только уникальные свойства для каждого компонента.

Рис. З.6. Диалоговое окно DOCUMENT Property Pages

Компонент Label предназначен для размещения текста на разрабатываемой Web-странице. При этом в HTML-код страницы добавляется не тег нового абзаца <р>, как можно было бы ожидать, а новый блок, реализуемый тегом

. Следует также помнить, что в самом начале разработки Web-страницы Visual Studio.NET автоматически добавляет в HTML-код еще пустой страницы теги формы, внутри которой и будет располагаться все содержимое страницы. Естественно, разработчик не ограничен одной этой формой, создаваемой по умолчанию, и может вставить дополнительные формы в разрабатываемый документ, но об этом несколько позже.
Итак, компонент Label обладает следующим набором свойств, которые большей частью относятся к отображению данного текста.

  • Backcolor. Свойство задает цвет фона элемента.
  • BorderCoior. Свойство устанавливает цвет границы элемента, если она, конечно, имеет ненулевую ширину.
  • Borderstyie. Свойство задает тип отображаемой границы элемента.
  • Borderwidth. Свойство устанавливает ширину границы элемента.
  • cssciass. Свойство содержит в качестве своего значения наименование класса-селектора CSS-таблицы, с которой связана создаваемая страница. Естественно, для того чтобы использовать данное свойство, необходимо создать и подключить CSS-таблицу.
  • Font. Составное свойство, задающее шрифт, при помощи которого будет отображаться текстовое содержимое элемента. В его состав входят следующие подсвойства.
  • Bold. Логическое свойство, указывающее, будет ли применено полужирное начертание шрифта.
  • italic. Логическое свойство, указывающее, будет ли применено курсивное начертание шрифта.
  • Name. Свойство задает наименование шрифта, которым будет отображаться текстовое содержимое элемента. В выборе значения данного свойства следует проявить разумный консерватизм, так как далеко не факт, что удаленный пользователь, просматривающий Web-страницы, входящие в разрабатываемый проект, будет обладать тем же причудливым набором редких шрифтов, которые долго собирал разработчик. Поэтому следует ориентироваться все-таки на стандартные шрифты, входящие в состав стандартных поставок максимально большого количества операционных систем.
  • Names. Свойство позволяет задавать наименования шрифтов, которые будут использованы браузером удаленного пользователя в тех случаях, когда шрифт, указанный разработчиком в предыдущем свойстве, все-таки не будет установлен в операционной системе пользователя.
  • Overiine. Логическое свойство, указывающее, будет ли текстовое содержимое элемента дополнено горизонтальной линией, проходящей поверх символов шрифта.
  • size. Свойство устанавливает размер применяемого шрифта. При этом используются символьные значения, унаследованные стандартом HTML из CSS.
  • strikeout. Логическое свойство, указывающее, будет ли текстовое содержимое элемента перечеркнуто горизонтальной линией.
  • Underline. Логическое свойство, указывающее, будет ли текстовое содержимое элемента подчеркнуто.
  • ForeCoior. Значение устанавливает цвет символов шрифта, которым будет отображено текстовое содержимое элемента.
  • Text. Свойство содержит текст, который и составляет содержимое элемента Label.
  • AccessKey. Свойство устанавливает комбинацию клавиш, по нажатию которой фокус ввода будет перенесен на данный элемент.
  • Enabieviewstate. Очень интересное свойство логического типа. Дело в том, что многие элементы могут запоминать свое состояние, измененное пользователем. Очень часто это свойство применяется для элементов форм и элементов группы Web Forms (Web-формы). Однако наличествует и в группе свойств элемента Label. В том случае, если свойство установлено в True, то оно будет запоминать свои состояния и при перезагрузке страницы отображать себя именно так, как выглядело последний раз. То же самое относится и ко всем остальным элементам с подобным свойством.
  • Tabindex. Свойство содержит номер элемента в последовательности элементов оформления Web-страницы, перевод фокуса ввода между которыми может осуществляться при помощи табуляции. В данном случае разработчик получает возможность обеспечить доступ к отдельным элементам, так же как и к органам управления обычных приложений Windows — при помощи клавиши табуляции. Для этого надо каждому подобному элементу установить целочисленное значение свойства Tabindex. Соответственно, смена фокуса ввода будет переходить по элементам с установленным явно этим свойством от наименьшего значения к наибольшему.
  • ToolTip. Значение данного свойства будет высвечиваться в виде хинта-подсказки в браузере пользователя, когда тот наведет курсор мыши на элемент.
  • visible. Логическое свойство, которое указывает, будет отображаться данный элемент в браузере удаленного пользователя при просмотре Web-страницы, или нет.
  • Height. Свойство задает высоту создаваемого элемента.
  • weight. Свойство устанавливает ширину элемента.
  • id. Свойство содержит уникальный идентификатор объекта, который является значением одноименного атрибута id в HTML-коде, и служит наименованием объекта для обращения к нему из кода приложения.

Элемент Button создает обычную кнопку на разрабатываемой Web-странице. При переносе данного компонента на Web-страницу в режиме дизайна, автоматически добавляется фрагмент HTML-кода следующего вида:

Таким образом, используется тег с типом button. Чаще всего данный элемент оформления Web-страниц используется разработчиками для запуска пользователями каких-либо скриптов, выполняющихся на стороне пользователя. Но какими-либо особыми свойствами этот объект не обладает, поэтому его можно не рассматривать детально. Также необходимо осознавать, что данная кнопка не будет обрабатываться сервером I1S, поэтому попытка написать обработчик нажатия на кнопку пользователем приведет лишь к отображению предупреждения, что данный орган управления предназначен для обработки браузером, а не сервером. Для того чтобы перевести данный компонент в разряд элементов, обрабатываемых сервером, можно щелкнуть правой кнопкой мыши на элементе и в появившемся контекстном меню выполнить команду Run As Server Control (Выполнять под управлением сервера).

Также Visual Studio. NET предоставляет возможность использовать кнопки Reset и Submit, которые реализуются при помощи все того же тега , но при этом используются иные значения параметра type: reset и submit, соответственно. Надписи на всех трех видах кнопок задаются при помощи свойства value, а стиль отображения регулируется свойством style, в качестве значения которого используется набор инструкций CSS. Кнопка типа Reset, как мы знаем, обновляет содержимое всех органов управления, входящих в состав той же формы, что и сама кнопка, устанавливая для них те значения, которые были заданы разработчиком по умолчанию. Кнопка типа Submit позволяет пользователю отправить введенные в органы управления формы данные на сервер для их обработки.

Компонент с наименованием Text Field позволяет создавать однострочное поле символьного ввода. В HTML-коде оно реализуется уже знакомым нам тегом , но теперь значение параметра type устанавливается в text. Компонент обладает некоторыми специфическими свойствами.

  • maxiength. Свойство устанавливает максимальное количество символов, которые пользователь может ввести в поле.
  • readonly. Свойство логического типа указывает, есть ли у пользователя возможность изменять информацию, находящуюся в этом поле. Если разработчик установил значение True для этого свойства, то текст, находящийся в поле, изменить будет нельзя.
  • size. Свойство устанавливает видимый размер поля ввода в символах.

Поле текстового ввода имеет и две дополнительные модификации. Так, компонент File Field совмещает в себе поле текстового ввода и кнопку Обзор, при нажатии на которую пользователем активизируется стандартное диалоговое окно операционной системы для выбора файла. Файл, который выбрал пользователь, обычно пересылается на сервер для обработки. А компонент Password Field фактически является функциональным двойником обычного поля текстового ввода, за исключением того, что символы, вводимые пользователем, отображаются в виде звездочек, чтобы никто не смог увидеть вводимых данных. Естественно, подобная модификация поля текстового ввода чаще всего применяется для запроса различных паролей.

Для того чтобы предоставить пользователю возможность вводить достаточно большие объемы текста, разработчик может воспользоваться компонентом Text Area, который позволяет вводить несколько текстовых строк. Внешний вид этого элемента регулируется следующим набором свойств:

  • cols. Свойство задает ширину поля ввода в символах;
  • disabled. Свойство логического типа указывает, будет ли доступен данный орган управления пользователю. Проще говоря, сможет ли он получить фокус ввода;
  • rows. Свойство задает высоту поля ввода в символах, т. е. количество одновременно отображаемых строк в поле;
  • wrap. Свойство устанавливает способ разбиения строк, не умещающихся в поле ввода полностью.

Элемент checkbox является реализацией независимого переключателя. Представляет собой всего лишь позицию для установки или снятия флажка в виде галочки. Естественно, правильнее всего будет комбинировать его с элементом Label, чтобы пользователь мог все-таки увидеть назначение переключателя.

  • checked. Свойство устанавливает начальное состояние переключателя, будет ли установлен в нем флажок или нет. Свойство логическое, поэтому разработчик может использовать только два значения — True или False.
  • name. Свойство устанавливает наименование органа управления, которое будет передано на сервер для обработки. Именно по этим именам обрабатывающая программа и будет различать органы управления.
  • value. Значение этого свойства будет передано на сервер в том случае, если пользователь установит флажок в данном независимом переключателе.

Для того чтобы создать группу зависимых друг от друга переключателей, или, как их еще называют — кнопок выбора, следует воспользоваться соответствующим компонентом с наименованием Radio-Button. Для того чтобы мы могли объединить эти компоненты в одну группу, необходимо установить для всех кнопок переключателей одно и то же значение свойства name. Естественно, встает вопрос, а как программа, обрабатывающая данные, переданные пользователем, будет различать, какая именно кнопка была выбрана пользователем. Для этого используется свойство value. В этом случае обрабатывающей программе будет передано наименование группы кнопок переключателей и значение свойства value той кнопки, которую выбрал пользователь.

Компонент Hidden не отображается на Web-странице, когда ее в браузере просматривает удаленный пользователь. Обычно это поле используется дл* хранения и передачи некоей дополнительной информации, которую пользователь не должен видеть. Раньше это скрытое поле использовали в разветвленных Web-приложениях для хранения значений различных переменных которые должны были быть доступны нескольким формам сразу. Этот аналог глобальных переменных. Конечно, нельзя в подобных полях хранит! секретную информацию, так как Web-страницы могут сохраняться в кэше и при просмотре их кода пользователь сможет увидеть содержимое скрытогс поля. На самом деле в приложениях ASP. NET нет нужды использовать скрытое поле подобным образом, так как поддержка глобальных переменны уже встроена в ASP.NET. Более того, очень часто эти переменные использовались для поддержки механизма сеансов работы удаленных пользователей. А в ASP.NET этот механизм реализован более изящно, и использовать для этой цели глобальные переменные теперь нет нужды.

Еще одним компонентом, часто включаемым в формы, является выпадающий список, реализуемый при помощи элемента Dropdown. Элементы списка задаются при помощи диалогового окна Property Pages

Элементы выпадающего списка задаются при помощи органов управления, объединенных в группу Options for SELECT tag (Элементы выпадающего списка). Каждому элементу списка соответствует некое значение, которое будет передано обрабатывающей программе на Web-сервер, когда пользователь завершит ввод данных. Текст элемента списка указывается в поле ввода Text (Текст), а соответствующее ему значение — в поле Value (Значение). Затем введенная пара "имя-значение" вносится в состав списка при помощи кнопки Insert (Вставить). Порядок отображения элементов регулируется при помощи двух кнопок с изображением стрелок, направленных вверх и вниз. Эти кнопки перемещают соответственно вверх и вниз по списку выделенный элемент. Удаление какого-либо элемента из списка осуществляется, как нетрудно догадаться, при помощи кнопки Delete (Удалить). Наименование самого выпадающего списка, которое будет передано в обрабатывающую программу на сервере, задается в поле текстового ввода Name (Имя). Количество строк, отображаемых браузером при нажатии на кнопку, раскрывающую список, указывается в поле Size (Размер). Правда, в этом случае выпадающий список может потерять свою привычную форму и превратиться в обычный список с полосами прокрутки. Подобный список также может создаваться при помощи компонента Listbox. А в том случае, если разработчик готов предоставить пользователю возможность выбора не одного, а нескольких элементов выпадающего списка сразу, следует установить флажок в независимом переключателе Allow multiple selections (Разрешить множественный выбор).

При использовании диалогового окна настройки свойств выпадающего списка может создаться впечатление, что обычное штатное окно свойств Properties (Свойства) уже не может предоставить каких-либо новых возможностей. Однако это не так. В нем присутствует свойство seiectedindex, которое указывает номер элемента, выбранного по умолчанию. Кстати, когда пользователь выберет свой элемент из выпадающего списка, соответствующим образом изменится и значение этого свойства.

Таблицы являлись одним из самых часто используемых инструментов в дизайне Web-страниц. Дело в том, что именно эти компоненты могли создать некое подобие верстки. Теперь, если мы используем абсолютное позиционирование элементов Web-страниц, нет нужды использовать хитрые приемы верстки при помощи таблиц. Однако далеко не факт, что разработчик всегда будет иметь возможность использовать абсолютное позиционирование, поэтому забывать о таблицах не стоит.

Вставка таблицы на проектируемую Web-страницу производится либо при помощи компонента Table, либо при помощи команды Table | Insert | Table (Таблица | Вставить | Таблица). По умолчанию создается таблица из трех строк и трех колонок. Однако всегда есть возможность настроить внешний вид настолько тонко, насколько это позволяет технология HTML. Естественно, все параметры отображения таблицы задаются при помощи ее свойств, которые нам предстоит рассмотреть.

  • align. Свойство устанавливает горизонтальное выравнивание содержимого ячеек таблицы. В качестве значения свойства разработчик может использовать одно из трех ключевых слов: left, center и right, которые прижимают содержимое ячеек к левому краю ячеек, центрируют его или прижимают к правому краю, соответственно.
  • background. В качестве значения данного свойства используется URL графического файла, который будет использован в качестве фона таблицы.
  • bgcolor. Свойство задает цвет фона таблицы. Естественно, не имеет смысла использовать это свойство одновременно с предыдущим.
  • bprdercoior. Свойство задает цвет границ ячеек и таблицы в целом.
  • bordercoiordark. Свойство используется для создания иллюзии трехмерной границы таблицы. Для этого граница таблицы разделяется на две части. Верхняя левая половина отображается светлым цветом, а нижняя правая — темным. При этом подобное разделение относится и к ячейкам. Но у ячеек темная и нижняя границы меняются местами. Данное свойство устанавливает цвет темной половины границы. Впрочем, разработчик может сделать эту границу светлой. Выбор цвета полностью в его власти.
  • bordercoioriight. Свойство устанавливает цвет светлой стороны границы.
  • ceiipadding. Свойство задает отбивку ячейки, т. е. расстояние между содержимым ячейки и ее границами. В качестве значения свойства используется целое число, обозначающее количество пикселов.
  • cellspacing. Свойство предназначено для установки отступа ячеек, т. е. расстояния между самими ячейками.
  • height. Свойство задает высоту таблицы. На самом деле, изначально высота таблицы рассчитывается на основе ее содержимого, как сумма высот всех столбцов. А высота каждого столбца есть высота его самой высокой ячейки. Однако разработчик при помощи данного свойства может сам установить высоту таблицы. Если это значение будет больше, чем высота таблицы, рассчитанная браузером на основе ее содержимого, то будет использоваться значение, установленное разработчиком.
  • width. Свойство задает ширину таблицы. Как и в случае с высотой, это свойство имеет вес только тогда, когда превышает ширину, рассчитанную на основе содержимого ячеек. При этом в отличие от высоты таблицы, которую разработчик может задавать лишь в пикселах, ширина может указываться как в пикселах, так и в процентах.

На самом деле необязательно устанавливать все свойства таблицы в окне Properties (Свойства). Если щелкнуть по выделенной таблице правой кнопкой мыши, и в появившемся контекстном меню выполнить команду Properties (Свойства), то будет активизировано диалоговое окно Property Pages (Свойства Таблицы), показанное на рис. 3.8. В этом окне можно установить все параметры отображения, что называется, в визуальном режиме.

Все параметры отображения, установленные для таблицы, распространяются на ее отдельные строки и ячейки. Однако если разработчик установит другие параметры для каких-либо ячеек или строк, то вновь установленные свойства перекроют более общие свойства таблицы. Другими словами, свойства для более низких объектов в табличной иерархии имеют несколько больший вес.

Рис. З.8. Диалоговое окно

Property Pages

Однако только на уровне ячеек таблиц можно задать некоторые дополнительные свойства отображения их содержимого. Для этого следует перевести курсор именно в ту ячейку, свойства которой необходимо установить, и перейти к встроенному окну редактирования свойств объекта Properties (Свойства). Естественно, мы рассмотрим те свойства, которые типичны для ячеек, и доступ к которым на уровне всей таблицы не предусмотрен.

  • coispan. Свойство используется, если одна ячейка будет объединять в себе несколько ячеек из соседних столбцов, но в пределах одной строки. По сути дела, значение этого свойства указывает, сколько бы ячеек было вместо искомой ячейки, если бы она не объединяла столбцы.
  • nowrap. Логическое свойство, указывающее, может ли браузер разбивать текстовое содержимое ячейки на несколько строк, если в исходном виде оно превышает горизонтальные размеры ячейки.
  • rowspan. Свойство весьма похоже на только что рассмотренное свойство coispan. Но при этом указывается, сколько объединяется ячеек по вертикали.
  • vaiign. Свойство регулирует выравнивание содержимого ячеек по вертикали. В качестве значения данного свойства может быть использовано одно из предустановленных ключевых слов: baseline, bottom, middle и top, которые выравнивают содержимое ячейки по базовой линии шрифта, прижимают содержимое к верхней границе ячейки, центрируют по вертикали и прижимают к нижнему краю ячейки соответственно.

Также нам доступны методы объединения соседних элементов Web-страницы в единые блоки. Все элементы оформления HTML-документов разделяются на два типа: inline-элементы, которые чаще всего являются просто элементами текста, и блочные элементы, inline-элементы могут являться частью строки, а блочные элементы всегда занимают обособленное место на Web-странице, и обязаны начинаться всегда с новой строки. Естественно, блочные элементы могут включать в себя другие блочные элементы и inline-элементы. По вполне понятным причинам inline-элементы не могут включать в себя блочные элементы.

Объединение элементов Web-страницы в блоки позволяет применять к ним единое оформление, осуществлять некое подобие верстки. Достаточно будет изменить расположение блока, изменив один объединяющий тег. Естественно, это удобнее, чем менять расположение каждого элемента Web-страницы по отдельности.

Для объединения элементов блочного типа используется тег

с его закрывающим близнецом
. А для iniine-элементов используется пара тегов и . Учитывая вышесказанное, ясно, что блок с тегом
не может располагаться внутри блока с тегом , так как блочные элементы не могут входить в состав iniine-элементов.

Visual Studio .NET предоставляет разработчику возможность использовать подобные блочные инструкции. Microsoft, естественно, предпочитает блоки, реализуемые тегом

. Элемент Label опирается именно на этот тег. Однако в элементе Label нельзя группировать иные элементы оформления Web-страницы. Поэтому в палитре компонентов HTML находятся еще два элемента, создающие подобные блоки-контейнеры. И называются они практически одинаково — Flow Layout Panel и Grid Layout Panel. Более того, по набору своих свойств они также идентичны. В чем же разница между ними? Дело в том, что элемент Flow Layout Panel применяется в том случае, когда требуется использовать стандартное расположение элементов без применения абсолютной модели позиционирования. В тех случаях, когда разработчик планирует применять подобную модель позиционирования внутри блока-контейнера, следует использовать компонент Grid Layout Panel. А потом уже внутри этих контейнеров разработчик сможет помещать различные элементы оформления Web-страниц.

Компонент с наименованием image позволяет размещать на разрабатываемых Web-страницах графические изображения и видеоклипы. Естественно, основные параметры данного компонента задаются при помощи все тех же свойств.

  • alt. Свойство задает текст, который будет отображаться в виде хинта-подсказки при наведении пользователем курсора мыши на загруженную и отображенную браузером картинку. В том случае, если по каким-либо причинам искомое графическое изображение не будет загружено, например, из-за неверной ссылки на него или установок браузера, данная текстовая строка будет отображена вместо картинки или видеоклипа.
  • border. Свойство устанавливает ширину границы, отображаемой вокруг рисунка или области воспроизведения видеоклипа. Значением данного свойства является неотрицательное целое число, указывающее толщину границы в пикселах.
  • controls. Свойство логического типа, которое применяется разработчиком в тех случаях, когда на Web-страницу внедряется не простое графическое изображение, а видеоклип. Данное свойство указывает, будут ли вместе с видеоклипом отображаться органы управления его воспроизведением, а именно, кнопки запуска воспроизведения и паузы, а также бегунок, устанавливающий текущую позицию воспроизведения.
  • dynsrc. Свойство применяется для внедрения в состав Web-страницы видеоклипов. Значением свойства является URL воспроизводимого видеофайла. Естественно, разработчикам предоставляется возможность вставлять файлы с расширениями .avi, .asf и .mpeg, т. е. именно те типы, с которыми работает Windows Media Player. Хотя на самом деле браузеры могут воспроизводить видеофайлы и других форматов, если в системе ft удаленного пользователя установлены соответствующие видеопроигрыватели.
  • loop. Это свойство, как и два предыдущих, используется при работе с видеоклипами. Оно задает количество повторов воспроизведения ви-деоклипа после того, как будет полностью загружен соответствующий видеофайл,
  • lows гс. Данное свойство применяется при работе с графическими изображениями. Оно указывает на облегченную версию картинки, которая будет использована браузером в тех случаях, когда скорость работы с интернетом достаточно низка, и придется слишком долго загружать основное изображение. В качестве значения свойства, естественно, используется URL, указывающий на то самое "облегченное" изображение.
  • src. Свойство содержит URL, указывающий на графический файл, в котором хранится искомое изображение, предназначенное для отображения на Web-странице.
  • usemap. Свойство используется, если данное графическое изображение является одновременно местом для размещения одной или нескольких гиперссылок. В качестве значения свойства используется URL.
  • vrmi. Свойство применяется для внедрения на Web-страницу не просто изображения, а сцены виртуальной реальности, созданной при помощи языка VRML (Virtual Reality Modeling Language).
  • hspace. Свойство устанавливает размер отступа от границы графического изображения до окружающих его остальных элементов оформления Web-страницы по вертикали. Значением свойства является целое число, указывающее размер отступа в пикселах.
  • vspace. Свойство устанавливает размер отступа от границы графического изображения до окружающих его остальных элементов оформления Web-страницы по горизонтали. Значением свойства является целое число, указывающее размер отступа в пикселах.

И последним элементом, который мы еще не рассмотрели на вкладке HTML, является элемент Horizontal Rule, который позволяет размещать на Web-странице горизонтальную линию, являющуюся штатным средством HTML для визуального разделения различных блоков информации. Подобная линия реализуется при помощи тега


. Естественно, этот элемент также обладает некоторыми специфичными свойствами.

  • align. Указывает горизонтальное позиционирование линии. В качестве значения свойства используется одно из трех ключевых слов — center, left или right, которые центрируют линию, или прижимают ее к левому или правому краю окна просмотра браузера, соответственно.
  • color. Свойство задает цвет отображаемой горизонтальной линии.
  • noshade. Логическое значение, указывающее, будет ли горизонтальная линия иметь тень, или нет. Если пользователь использует значение False, то вместе с линией будет отображена и ее тень.
  • size. Свойство задает толщину отображаемой горизонтальной линии в пикселах.
  • width. Задает длину горизонтальной линии. Длина может указываться как в процентах, так и в пикселах.

На этом перечень компонентов вкладки HTML заканчивается. Они чаще всего используются просто для оформления Web-страниц, а все основные действия Web-приложений связаны с компонентами вкладок Web Forms (Web-формы) и Components (Компоненты), которые мы будем рассматривать в следующих разделах этой главы.

Элементы Web Forms

Компоненты, размещенные на вкладке Web Forms (Web-формы), во многом совпадают по наименованиям и внешнему виду с компонентами вкладки HTML. Основное различие между ними заключается в том, что компоненты Web Forms предназначены для работы с сервером, который может изменять их свойства и обрабатывать события, инициируемые этими компонентами. Естественно, достаточно большую часть свойств данные компоненты наследуют от своих обычных предшественников с вкладки HTML. Однако существуют и дополнительные свойства, которые регулируют различные рабочие состояния этих элементов и порядок обработки и передачи информации. Сначала мы просто перечислим компоненты Web Forms (Web-формы) с их кратким описанием, а затем уже перейдем к детальному рассмотрению тех или иных свойств.

  • Компонент Label. Полное наименование класса, который реализует данный компонент — system.Web.ui.webControis.Label. Предназначен только для отображения текста.
  • Компонент TextBox. Полное наименование его класса — System.web.ui.WebControis.TextBox. Это обычное однострочное поле текстового ввода.
  • Компонент Button. Создает кнопку. Полное наименование класса — System.web.ui.WebControis.Button. При работе с компонентами Web Forms (Web-формы) разработчику не нужны специализированные типы кнопок, такие как Reset и Submit, так как реакцию приложения на нажатие подобных кнопок он определяет самостоятельно.
  • Компонент LinkButton. Полное наименование класса —System. Web. UI .WebControis. LinkButton. Данный компонент п ри ото бражении его браузером выглядит как обычная гиперссылка, однако функционально он полностью совпадает с компонентом Button.
  • Компонент imageButton. Полное наименование класса — system.web.ui.WebControis.imageButton. Выглядит как обычное графическое изображение, однако на деле является кнопкой.
  • Компонент HyperLink. Предназначен для создания гиперссылок на разрабатываемой Web-странице. Полное наименование класса —
  • System.Web.UI.WebControis.HyperLink.
  • Компонент DropDownList. Позволяет пользователю ввести свое текстовое значение или выбрать его из выпадающего текстового списка. Полное наименование класса— System. Web.UI.WebControls. DropDownList.
  • Компонент ListBox. Полное наименование класса — System. Web. UI. WebControis. ListBox. Позволяет пользователю выбрать одно или несколько значений из списка.
  • Компонент DataGrid. Достаточно объемный и сложный компонент, который позволяет отображать информацию в табличном виде. Полное наименование Класса — System.Web.UI.WebControls.DataGrid.
  • Компонент DataList. Предназначен для отображения информации, получаемой из набора данных, обычно из подключенной базы данных. Подобен таблице, но применяет свои методы отображения различных элементов. Полное наименование класса —Systern.Web.UI.WebControis.DataList.
  • Компонент Repeater. Предназначен для отображения повторяющихся элементов оформления Web-страницы. Установка параметров отображения производится при помощи тегов HTML, т. е. визуальных средств установки параметров отображения у данного компонента нет. Полное наименование класса — System.Web.UI.WebControls.Repeater.
  • Компонент checkBox. Создает единичный независимый переключатель. В отличие от своего предшественника с палитры HTML, данный компонент содержит помимо самого переключателя еще и текст, идентифицирующий его. Полное наименование класса — system.web.ui.webControis.checkBox.
  • Компонент checkBoxlist. Предназначен для создания набора независимых переключателей. Доступ к отдельным переключателям этого компонента осуществляется при помощи свойства items, которое на самом деле является обычной коллекцией. Полное наименование класса — System.Web.UI.WebControls.CheckBoxList.
  • Компонент RadioButton. Предназначен для создания кнопки-переключателя. Обычно в одиночном виде не используется. Полное наименование класса — System.Web.UI.WebControls.RadioButton.
  • Компонент RadioButtonList. Предназначен для создания группы переключателей. Полное наименование класса, реализующего этот компонент — System.Web.UI.WebControls.RadioButtonList.
  • Компонент image. Позволяет внедрять в состав содержимого Web-страницы графическое изображение. Полное наименование класса — System.Web.UI.WebControls.Image.
  • Компонент Panel. Создает на разрабатываемой Web-странице блок-контейнер, в котором могут быть размещены другие элементы. По сути, является некоторым аналогом компонентов Layout Panel, находящихся на вкладке HTML. Полное наименование класса — System.web. ui. WebControls. panel.
  • Компонент PiaceHoider. Как и предыдущий компонент, он является контейнером для элементов Web-страницы. Однако он предназначен для размещения элементов, которые динамически создаются Web-приложением, т. е. на момент первоначальной загрузки и отображения Web-страницы эти элементы еще не существовали. Полное наименование его класса — System.Web.UI.WebControls.PlaceHolder.
  • Компонент calendar. Достаточно интересный компонент, который отображает календарную панель на Web-странице. Очень удобно использовать подобный функциональный элемент на сайтах с большим информационным наполнением, разбитым по датам. Полное наименование класса, реализующего ЭТОТ Компонент, — System.Web.UI.WebControls.Calendar.
  • Компонент AdRotator. Позволяет отображать в заданной или случайной последовательности графические изображения. По сути дела, данный элемент является заготовкой для создания баннерной системы. Полное наименование Класса — System. Web.UI.WebControls.AdRotator.
  • Компонент таЫе. Предназначен для создания таблиц. Чаще всего используют для отображения некоей информации, взятой из базы данных, в табличном виде. Полное наименование класса — system. web.ui.webcontrois. Table.
  • Компонент RequiredFieiavalidator. Данный компонент создает текстовое предупреждение, которое будет отображено, если пользователь при работе с Web-страницей не введет некоторые данные, являющиеся обязательными для продолжения работы. Полное наименование класса — Sy stem. Web. U I .WebControls . RequiredFieldValidator.
  • Компонент compareVaiidator. Применяется для проверки равенства или неравенства (соотношение больше-меньше) некоего значения, введенного пользователем. Полное наименование класса, реализующего этот компонент, — System. Web. UI .WebControls .CompareVaiidator.
  • Компонент RangeValidator. Позволяет проверять, входит ли введенное пользователем значение, в некий заранее определенный интервал допустимых значений. Полное наименование класса для данного компонента — System. Web. UI .WebControls .RangeValidator.
  • Компонент RegularExpressionValidator. Компонент позволяет проверять введенное пользователем значение на соответствие некоему шаблону, большой набор которых предоставлен разработчику в готовом виде, и, кроме того, естественно, разработчик может сам устанавливать свои собственные символьные шаблоны. Полное наименование соответствующего Класса — System. Web. UI .WebControls . RegularExpressionValidator.
  • Компонент CustomValidator. Этот компонент, как и несколько предыдущих, относится к контролирующим элементам. Но если в предыдущие компоненты уже встроены механизмы проверки соответствия введенного значени я некоему условию, то данный элемент позволяет разработчику подключат свои собственные функции проверки достоверности введенных данных. Полное наименование класса — System. Web.UI.WebControls.CustomValidator.
  • Компонент VaiidationSummary. Предназначен для вывода отчета о несоответствиях данных, введенных пользователем. По сути, данный компо нент является итоговым отчетом, который может быть связан с предыдущими компонентами проверки достоверности. Полное наименованш Класса — System. Web. UI .WebControls .VaiidationSummary.
  • Компонент xml. Предназначен для отображения на Web-странице данных, полученных из XML-документов. Естественно, отображение происходит не напрямую, так как браузер не может знать, как именно следуе т отображать содержимое тех или иных XML-тегов. Поэтому с документе ом связывается стилевая таблица XSL, содержащая инструкции по отображению использованных XML-тегов. Полное наименование класса дл я Дан ного Компонента — System. Web.UI.WebControls.Xm l.
  • Компонент crystaiReportviewer. Предназначен для внедрения в разрабатываемые Web-страницы различных отчетов, построенных на технологии Crystal Report, которая входит в состав Visual Studio .NET. Полное наименование класса для данного компонента — System.Web.UI.WebControls.CrystaiReportviewer.

На этом перечень компонентов, расположенных на вкладке Web Forms (Web-формы) заканчивается. На самом деле, этого краткого перечня явно недостаточно для того, чтобы работать с этими компонентами. Однако в следующих разделах мы увидим, как их можно использовать.

Объект HttpResponse

Встроенный объект HttpResponse выполняет пересылку информации браузеру удаленного пользователя. Разработчик также может обращаться к этому объекту посредством свойства Response объекта Page. Примеры использования этого встроенного объекта мы увидим в последующих разделах. В этом разделе мы рассмотрим основные свойства и методы данного объекта. Начнем со свойств.

Buffer. Свойство логического типа, в котором указывается, будет ли буферизоваться информация, передаваемая удаленному пользователю, перед отправкой. Если разработчик использует значение True, то информация не будет передаваться в браузер после выполнения каждого метода write, а станет накапливаться в буфере, а затем отправляться удаленному пользователю единым пакетом. Данное свойство унаследовано из предыдущих версий ASP.

  • BufferOutput. Данное свойство является полным функциональным аналогом предыдущего свойства. Однако для приложений ASP.NET рекомендуется использовать именно его.
  • Cache. В этом свойстве хранятся установки кэширования страницы, такие как, например, срок ее актуальности.
  • Cachecontroi. Свойство устанавливает значение одноименного HTTP-заголовка. В качестве значения могут использоваться ключевые словаPublic или Private.
  • charset. В данном свойстве указывается наименование кодировки символов, которая должна быть использована браузером для отображения посланной ему информации.
  • ContentEncoding. В данном свойстве хранится значение одноименного HTTP-заголовка, который устанавливает тип кодирования пересылаемой информации.
  • ContentType. Свойство предназначено для хранения MIME-типа передаваемой информации.
  • cookies. В свойстве хранится коллекция cookies, которая будет установлена на локальную систему пользователя. Более подробно о применении cookies будет рассказано несколько позже в соответствующем разделе главы.
  • Expires. В данном свойстве указывается срок актуальности передаваемой Web-страницы, попросту, время ее хранения в кэше браузера удаленного пользователя. Значение данного свойства указывается в минутах. Свойство введено в ASP.NET в целях обеспечения совместимости с предыдущими версиями ASP.
  • ExpiresAbsoiute. Данное свойство, как и предыдущее, устанавливает срок хранения страницы в кэше браузера пользователя. Однако для этого свойства значение указывается в виде стандартной даты, после наступления которой страница будет считаться неактуальной.
  • Filter. Свойство позволяет разработчику создавать некий фильтр (например, переводящий все символы в верхний регистр), через который будет пропускаться все содержимое отсылаемой Web-страницы перед тем как браузер удаленного пользователя получит эту страницу.
  • isciientconnected. Свойство логического типа, показывающее, не отключился ли еще удаленный пользователь от сервера.
  • Output. Ключевое свойство объекта HttpResponse. В нем хранится передаваемая удаленному пользователю информация в виде текста.
  • Outputstream. Данное свойство весьма похоже на предыдущее свойство Output, однако в нем информация, отсылаемая пользователю, хранится в двоичном виде, а не как текст.
  • status. Текст, указываемый разработчиком в этом свойстве, будет отображен в строке статуса браузера удаленного пользователя, когда тот получит переданную ему страницу.
  • statuscode. В данном свойстве хранится код статуса HTTP, передаваемый пользователю. В качестве значения используется целое число, как раз и являющееся кодом статуса передачи информации. По умолчанию используется значение равное 200, обозначающее успешную передачу данных.
  • statusDescription. Свойство похоже на предыдущее, но есть, конечно, и отличия. Так, значение имеет тип string, т. е. статус передачи информации записывается в виде строки. По умолчанию используется значение ок . Конечно же, помимо свойств, данный встроенный объект обладает и методами. Рассмотрим и их.
  • AddHeader. Метод позволяет пересылать заголовки протокола HTTP удаленному пользователю. В качестве параметров данного метода передаются наименование заголовка и значение, приписываемое этому заголовку. Оба параметра передаются как тип string. На самом деле этот метод унаследован из предыдущих версий ASP и не рекомендован к употреблению в приложениях ASP.NET.
  • AppendHeader. Метод полностью идентичен предыдущему. Рекомендован к применению в приложениях ASP.NET. Кстати, всегда следует помнить, что заголовки HTTP добавляются не в стандартный поток, а в самое начало передаваемого документа. В связи с этим лучше при передаче заголовков протокола HTTP использовать буферизацию информации.
  • AppendToLog. Метод позволяет записывать информацию напрямую в log-файл сервера IIS. Естественно, в качестве параметра передается строка, которую следует записывать в log-файл. Подобный метод позволяет дополнительно документировать действия пользователей.
  • BinaryWrite. Метод записывает данные в выходной поток, который переправляется удаленному пользователю. Данные передаются в двоичном виде, "как есть". В качестве параметра методу передается массив с элементами типа Byte.
  • clear. Метод полностью очищает буфер, в котором хранится информация, предназначенная для отправки удаленному пользователю.
  • ciearContent. Метод полностью функционально идентичен только что рассмотренному методу clear.
  • ciearHeaders. Метод удаляет все заголовки протокола HTTP, которые находятся в буфере, подготавливаемому к передаче удаленному пользователю.
  • End. Метод немедленно закрывает установленное соединение с удаленным пользователем. При этом, естественно, никакой информации пользователю не передается.
  • Flush. Метод немедленно отправляет пользователю всю информацию, накопленную к моменту выполнения метода в буфере. Естественно, для этого свойство BufferOutput должно быть установлено в True, иначе произойдет ошибка, и будет сгенерировано исключение.
  • Redirect. Метод перенаправляет пользователя к другому ресурсу. Проще говоря, если необходимо вывести отдельную Web-страницу, которая уже сформирована и ее URL известен, следует воспользоваться этим методом. В качестве параметра методу передается URL ресурса, который будет отправлен удаленному пользователю.
  • Write. Один из наиболее часто используемых методов объекта HttpResponse. Записывает в выводимый поток текстовую информацию. В качестве параметра методу могут передаваться значения типа char, String или м а ссивы тип а Char .
  • writeFiie. Метод записывает в выводимый поток содержимое файла, имя которого передается методу в качестве параметра типа string. В качестве дополнительных параметров можно передать начальную и конечную позиции передаваемого блока информации.

На этом мы заканчиваем краткий обзор встроенного объекта HttpResponse, позволяющего передавать информацию удаленному пользователю, которая затем будет отображена его браузером.

Объект HttpRequest

Если объект HttpResponse позволяет разработчику с максимальным удобством отправлять информацию удаленному пользователю, не заботясь о различных мелочах физического уровня, а сосредотачиваясь именно на логике отсылаемого пакета, то объект HttpRequest помогает разработчику легко разгрести ту кучу разнородной информации, которая приходит от удаленного пользователя. В этот объект помещается информация, посылаемая браузером на сервер. В блоке принимаемой информации могут находиться данные, введенные пользователем в элементы управления форм, URL запрошенного ресурса, содержание cookies и многое другое. Объект HttpRequest поможет разработчику получить именно ту информацию, которая ему нужна для функционирования приложения.

Мы поступим так же, как и в предыдущем разделе — рассмотрим перечень свойств и методов объекта. Принципы и основные приемы работы с данным объектом все равно будут объяснены в иных разделах, посвященных конкретным задачам Web-приложений. Начнем со свойств.

  • AcceptTypes. Свойство содержит в качестве значения массив строк типа string, в которых записываются типы MIME, которые поддерживаются браузером удаленного пользователя.
  • AppiicationPath. Свойство содержит путь к виртуальному каталогу, в котором находится ASP.NET приложение, относительно корневого каталога WWW-сервера.
  • Browser. Составное свойство, в котором указывается список параметров браузера удаленного пользователя. Значение данного свойства имеет тип HttpBrowserCapabalities. Соответственно, объект подобного типа имеет свои свойства, которые необходимо перечислить.
  • Activexcontrois. Свойство логического типа, указывающее, разрешено ли данному браузеру работать с элементами ActiveX.
  • aol. Свойство логического типа, указывающее, использует ли удаленный пользователь специализированный браузер службы AOL.
  • Backgroundsounds. Свойство логического типа, указывающее, разрешено ли данному браузеру воспроизводить звуковые файлы, прикрепленные к Web-страницам. 76
  • Beta. Свойство логического типа, сигнализирующее, что браузер удаленного пользователя является всего лишь бета-версией с возможно усеченной функциональностью.
  • Browser. Значение данного свойства является строкой, в которой содержится условное наименование браузера. Это же наименование передается в виде содержимого заголовка HTTP с наименованием User-Agent.
  • cdf. Свойство логического типа, указывающее, может ли браузер удаленного пользователя обрабатывать push-каналы доставки информации, созданные на основе формата CDF (Channel Definition Format).
  • Cookies. Свойство логического типа, указывающее, разрешено ли браузеру сохранять cookies на машине удаленного клиента.
  • crawler. Свойство логического типа, указывающее, установлено ли в браузере пользователя средство поиска Web crawler.
  • Frame ss Свойство указывает, может ли браузер пользователя отображать фреймы. В настоящее время этот вопрос, очевидно, не имеет особого смысла.
  • JavaApplets. Свойство логического типа, указывающее, может ли браузер удаленного пользователя корректно работать с апплетами Java.
  • JavaScript. Логическое свойство, в котором указывается, умеет или нет браузер удаленного пользователя интерпретировать и выполнять Java-сценарии.
  • MajorVersion. Свойство содержит основной номер версии браузера, т. е. число, стоящее до точки в полном номере версии. Значение данного свойства имеет, естественно, тип integer.
  • MinorVersion. Свойство указывает дополнительный номер версии, т. е. число, находящееся после первой точки в полном номере версии.
  • MsoomVersion. В свойстве указывается номер версии объектной модели документа (Microsoft XML Document Object Model), которая поддерживается браузером пользователя.
  • Platform. В данном свойстве содержится кодовое наименование операционной системы, которая установлена на машине удаленного пользователя. Естественно, значение данного свойства имеет типString.
  • Tables. Свойство указывает, может ли браузер пользователя отображать таблицы, включаемые в состав HTML-документов. Да, было когда-то такое время, когда браузеры не могли работать с таблицами.
  • Туре. В данном свойстве указываются кодовое наименование браузера и основной номер его версии. Значение свойства имеет тип string.
  • VBScript. Логическое свойство, в котором указывается, умеет или нет браузер удаленного пользователя интерпретировать и выполнять сценарии, написанные на языке VBScript.
  • version. Свойство содержит в строковом виде полную версию применяемого пользователем браузера.
  • wscDOMVersion. В свойстве указывается номер версии объектной модели документа (W3C Document Object Model), которая разработана консорциумом WWW.
  • winie. Логическое свойство, в котором указывается, работает удаленный пользователь на шестнадцатиразрядной версии Windows или нет.
  • Win32. Логическое свойство, в котором указывается, работает удаленный пользователь на тридцатидвухразрядной версии Windows или нет.
  • clientcertificate. Значение данного свойства имеет тип HttpCiientCertificate и содержит информацию об установках безопасности клиента, если тот использует соединение по протоколу SSL 3.0.
  • contentEncoding. В этом свойстве указывается наименование кодировки символов, примененной браузером при отправке информации на сервер.
  • contentLength. В данном свойстве указывается размер блока информации, переданного на сервер. Размер рассчитывается в байтах. Естественно, значение свойства имеет тип integer.
  • contentType. Свойство содержит наименование MIME-типа для принимаемой сервером информации.
  • Cookies. Свойство содержит коллекцию cookies, которые передаются на сервер браузером пользователя.
  • Filepath. В свойстве содержится путь к документу, который запросил пользователь. При этом не учитывается путь для перемещения внутри запрошенного документа, т. е. все закладки, если таковые были указаны в URL, этим свойством игнорируются. Путь указывается только к файлу.
  • Files. Свойство содержит коллекцию файлов, переданных пользователем на сервер. Естественно, свойство имеет смысл обрабатывать только в том случае, если указан MIME-ТИП multipart /form-data.
  • Filter. Данное сюйстю является функционально идентичным своему одноименному близнецу, который применяется к объекту HttpResponse. В этом свойстве указывается фильтр, применяемый к входящему потоку информации.
  • Form. В свойстве содержится коллекция наименований органов управления формы, которая была использована посетителем сайта для ввода информации.
  • Headers. В свойстве содержится коллекция заголовков протокола HTTP, переданных браузером удаленного пользователя на сервер.
  • HttpMethod. Свойство указывает, какой именно тип передачи информации на сервер был использован браузером удаленного пользователя. В качестве значений применяются ключевые слова Get, Post и Head. Тип значения свойства, естественно, string.
  • inputstream. В свойстве содержится входящий поток информации в "сыром" виде. А именно таким, каким его принял сервер.
  • isAuthenticated. Логическое свойство, указывающее, прошел ли удаленный пользователь аутентификацию или нет.
  • issecureconnection. Логическое свойство, которое применяется для указания, что клиент пользуется защищенным протоколом соединения, таким, как SSL.
  • Pa rams. Свойство объединяет в себе коллекцию всех переменных изQueryString, Form, ServerVariables и Cookies.
  • Path. В свойстве указывается путь в системе виртуальных каталогов к запрошенному удаленным пользователем ресурсу.
  • Pathinfo. Свойство содержит часть URL, запрошенного пользователем, располагающуюся после расширения файла. Другими словами, это добавочная информация, включенная в состав URL, помимо основного документа.
  • PhysicaiAppiicationpath. В свойстве содержится физический (а не виртуальный) путь к каталогу, в котором находится и выполняется действующее приложение ASP.NET.
  • PhysicaiPath. Свойство содержит физический путь, соответствующий виртуальному расположению файла, запрошенного пользователем.
  • QueryString. В свойстве находится коллекция с наименованиями всех переменных и параметров, переданных в строке запроса URL. Обычно в эту строку добавляются наименования органов ввода информации из форм и значений, введенных в них пользователем, если применен метод передачи get.
  • RawUri. В свойстве находится URL, запрошенный пользователем, в сыром виде, не прошедшим процедуру лексического анализа для выделения из него составных частей. Если у разработчика есть такое желание, он может самостоятельно разбирать этот URL.
  • RequestType. Свойство позволяет получать или устанавливать тип передачи информации от браузера удаленного пользователя на сервер. В качестве значений, естественно, могут быть использованы слова get и post.
  • ServerVariables. Свойство позволяет приложению получить доступ к коллекции наименований стандартных свойств сервера и браузера.
  • TotaiBytes. В свойстве указывается размер пришедшего на сервер запроса от удаленного пользователя в байтах. Естественно, значение данного свойства имеет тип integer.
  • uri. В данном составном свойстве собрана самая различная информация об URL, запрошенном пользователем.
  • uriReferrer. В данном свойстве содержится информация об URL той страницы, с которой пользователь пришел на текущую.
  • userAgent. Свойство содержит неразобранную информацию о браузере, применяемом удаленным пользователем, в виде одной строки.
  • userHostAddress. В свойстве содержится IP-адрес удаленного пользователя, который послал данный запрос.
  • userHostName. В свойстве содержится доменное имя, приписанное удаленному пользователю.
  • userLanguages. Значение содержит отсортированный массив строк, в которых указываются языки, используемые удаленным пользователем, т. е. его лингвистические предпочтения.

На этом список свойств встроенного объекта HttpRequest заканчивается. Мы переходим к его уникальным методам.

  • BinaryRead. Метод позволяет читать определенное количество байтов из входящего потока информации. В качестве параметра методу передается целочисленное значение, указывающее, сколько именно байтов следует прочитать. Метод возвращает массив типа Byte.
  • MapimageCoordinates. Метод возвращает двумерный массив, содержащий координаты активных областей, присущих изображению-гиперссылке.
  • saveAs. Метод сохраняет входящий поток информации на диск в виде файла. В качестве параметров методу передаются строка с наименованием создаваемого файла и логическое значение, указывающее, следует ли сохранять помимо основного потока информации еще и заголовки протокола HTTP, пришедшие вместе с ним.

Список уникальных методов объекта HttpRequest исчерпан. Настало время перейти к рассмотрению других встроенных объектов.

Объект HttpApplicationState

Доступ к встроенному объекту HttpApplicationState обычно осуществляется при помощи его укороченного наименования — Application. В этом объекте хранятся данные, которые будут доступны всем пользователям, одновременно работающим с Web-приложением. Чаще всего подобный объект разработчики используют как коллекцию для хранения неких данных, которые должны быть доступны сразу нескольким Web-страницам. В одном из следующих разделов мы увидим, как можно использовать этот объект для хранения данных, введенных удаленным пользователем в элементы формы.

Таки м образом, объект Application предоставляет разработчику некий аналог глобальных переменных.

Необходимо осознавать, что к одному и тому же приложению может одновременно обращаться несколько удаленных пользователей. Соответственно, сервер IIS запустит несколько процессов, в каждом из которых будет выполняться копия приложения. Так вот, все эти процессы будут обладать одним объектом Application, общим для всех.

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

  • AiiKeys. Свойство представляет собой массив строк, в которых записаны наименования всех элементов коллекции.
  • Contents. Свойство представляет собой ссылку на весь объект Application. Обычно применяется для его копирования в иной объект. Однако в ASP.NET нет нужды пользоваться данным свойством, достаточно обратиться к штатным механизмам присваивания значений. Свойство оставлено для обеспечения совместимости с предыдущими версиями ASP.
  • Count. Свойство целочисленного типа. В нем указывается количество элементов в коллекции.
  • item. Свойство предоставляет доступ к какому-либо конкретному элементу. Доступ может осуществляться по наименованию элемента или его порядковому номеру. Необходимо помнить, что нумерация элементов коллекции начинается с нуля. На самом деле данное свойство используется по умолчанию, поэтому обращение Application.item(O) абсолютно эквивалентно конструкции Application(0).

Естественно, объект обладает и набором методов. Рассмотрим и их.

  • Add. Метод добавляет еще одну глобальную переменную в общую коллекцию. В качестве параметров передаются строка с наименованием нового элемента и его значение.
  • clear. Метод очищает содержимое коллекции.
  • Get. Метод позволяет получить значение определенного элемента коллекции. В качестве параметра методу передается порядковый номер элемента или его уникальное наименование.
  • GetKey. Метод позволяет получить значение элемента коллекции. Доступ осуществляется только по