Мировые информационные ресурсы Презентации к курсу лекций Блог:

  • Размер: 8.9 Mегабайта
  • Количество слайдов: 283

Описание презентации Мировые информационные ресурсы Презентации к курсу лекций Блог: по слайдам

Мировые информационные ресурсы Презентации к курсу лекций Блог:  http: // anshamshev. wordpress. com ICQ: 446849975Мировые информационные ресурсы Презентации к курсу лекций Блог: http: // anshamshev. wordpress. com ICQ: 446849975 Ссылка на презентацию: http: // sdrv. ms/P 9 f. Di. P

Список литературы • Брайер Д. Microsoft ASP. NET.  Обеспечение безопасности. / Брайер Д. – М.Список литературы • Брайер Д. Microsoft ASP. NET. Обеспечение безопасности. / Брайер Д. – М. : Питер, 2008. – 446 с. • Мак-Дональд М. Microsoft ASP . NET 4. 0 с примерами на C# 2010 для профессионалов. / Мак-Дональд М. – М. : Вильямс, 2011. – 1418 с. • Магдануров Г. И. ASP . NET MVC Framework. / Г. И. Магдануров, В. А. Юнев – СПб. : БХВ-Петербург, 2010. – 320 с. • Сандерсон С. ASP . NET MVC Framework с примерами на C # для профессоналов. / С. Сандерсон – М. : Вильямс, 2010. – 557 с.

Интернет ссылки Адреса некоторых сайтов на русском языке:  • http: //www. aspnetmania. com Сообщество разработчиков.Интернет ссылки Адреса некоторых сайтов на русском языке: • http: //www. aspnetmania. com Сообщество разработчиков. NET: • http: //www. gotdotnet. ru/ • http: //www. sql. ru/ • http: //dotsite. ru/ Сообщество программистов: • http: //www. rsdn. ru/ Галерея хостинга: http: //www. microsoft. com/web/hosting/home Хостинг для создаваемых проектов можно получить на http: //masterhost. ru/ , http: //hosting. agava. ru/

Структура курса 4 Структура курса

Основные особенности ASP. NET • ASP. NET интегрируется с. NET Framework.  • Код ASP. NETОсновные особенности ASP. NET • ASP. NET интегрируется с. NET Framework. • Код ASP. NET компилируется, а не интерпретируется • ASP. NET поддерживает множество языков программирования • ASP. NET обслуживается средой CLR – Автоматическое управление памятью и сборкой мусора – Безопасность типов – Расширяемые метаданные – Структурированная обработка ошибок – Многопоточностъ • ASP. NET является объектно-ориентированной технологией. • ASP. NET является кроссбраузерной • ASP. NET позволяет легко выполнять развертывание и конфигурирование

ASP. NET 1. 0 и 1. 1 • Первоначально ASP. NET 1. 0 главным образом ориентироASP. NET 1. 0 и 1. 1 • Первоначально ASP. NET 1. 0 главным образом ориентиро валась на модель проектирования веб-страниц посредством так называемых веб-форм ( Web Forms ). Модель веб-форм представляет собой просто абстракцию, которая позволяет моделировать страницу в виде комбинации объектов. При запросе браузером конкретной страницы ASP. NET сначала создает объект для самой страницы, а затем для всех остальных эле ментов управления ASP. NET , которые присутствуют внутри нее. После этого страница и ее элементы управления проходят через ряд событий жизненного цикла, после чего — по завершении обработки страницы — они визуализируют окончательный вариант HTML и удаляются из памяти. За все, что происходит между этим, по большей части отвечает программирование ASP. NET

ASP. NET 2. 0 ASP 1. 1 + – Разнообразные элементы управления – Главные страницы –ASP. NET 2. 0 ASP 1. 1 + – Разнообразные элементы управления – Главные страницы – многократно используемые шаблоны страниц – Темы – Навигация – Безопасность и членство – Элементы управления для источников данных – Web – части – заготовленный каркас портала с гибкой настройкой – Профили – хранение информации о пользователях в БД без написания специального кода

ASP. NET 3. 5 • ASP. NET 2. 0 + – LINQ – Language Integrated QueryASP. NET 3. 5 • ASP. NET 2. 0 + – LINQ – Language Integrated Query — представляет собой набор расширений для языков С# и Visual Basic. Позволяет пи сать код, способный манипулировать находящимися в памяти данными практически тем же образом, что и запросы к базе данных. – Ajax – Asynchronous Java. Script and XML • Silverlight – клиентский модуль, позволяющий создавать с использованием подмножества технологии WPF – трёхмерная графика, анимация, мультимедийное содержимое – игры, анимационные эффекты.

ASP. NET 4 • ASP. NET 3. 5+ – Согласованная визуализация XHTML.  – Обновленное обнаружениеASP. NET 4 • ASP. NET 3. 5+ – Согласованная визуализация XHTML. – Обновленное обнаружение браузера. В ASP. NET 4 поставляются обновленные фай лы определений браузеров, что позволяет отвечающему за визуализацию меха низму на стороне сервера распознавать и предоставлять корректно направленную поддержку для более широкого спектра браузеров. – Сжатие данных состояния сеансов. В NET 2. 0 появилось новое пространство имен System. IO. Compression , обеспечивающее поддержку сжатия gzip. Теперь ASP. NET его может использовать для сжатия данных, передаваемых функционирующей за пределами процесса службе состояния сеансов. – Состояние представления по запросу. – Расширение возможностей для кэширования. В ASP. NET 4 разработчики из Microsoft начали предлагать точ ки для расширения возможностей кэширования, которые позволят заработчикам использовать новые типы механизмов кэширования, в том числе распределенные решения кэширования. – Элемент управления Chart. – Переделанный интерфейс Visual Studio. – Маршрутизация. В ASP. NET MVC включена поддержка для осмысленных и друже ственных в отношении поисковых механизмов URL -адресов. В ASP. NET 4 можно использовать ту же самую технологию маршрутизации для перенаправления за просов веб-форм. – Более эффективные инструменты для развертывания.

Компонент ASP. NET MVC • Компонент ASP. NET MVC ( Model - View - Controller —Компонент ASP. NET MVC • Компонент ASP. NET MVC ( Model — View — Controller — модель-представление-контрол лер) предлагает другой способ для построения веб-страниц, отличный от стандартной модели веб-форм. Суть его состоит в разбиении приложения на три отдельных логических части: – Модель включает весь бизнес-код приложения, например, логику доступа к данным и правила верификации; – Представление создает для модели походящее представление за счет ее визуализации в HTML -страницы; – Контроллер ко ординирует весь этот процесс за счет обработки операций взаимодействия с пользова телей, обновления модели и передачи информации в представление. • Преимущества ASP NET MVC : – Разработка через тестирование. ; – Контроль над HTML-разметкой. ; – Контроль над URL-адресами.

Компонент ASP. NET Dynamic Data  • Компонент ASP. NET Dynamic Data (Динамические данные ASP. NETКомпонент ASP. NET Dynamic Data • Компонент ASP. NET Dynamic Data (Динамические данные ASP. NET ) представляет собой вспомогательную платформу, которая позволяет быстро создавать управляе мые данными приложения. При использовании в сочетании с LINQ to SQL или LINQ to Entities он предоставляет комплексное решение, прово дящее от схемы базы данных до полнофункционального веб-приложения с поддержкой для просмотра, редактирования, вставки и удаления записей. • Dynamic Data является не просто средством для генерации кода и разметки, облегчающим жизнь разработчикам, которые ленятся разрабатывать собственные специальные приложения. Он представляет собой основан ную на шаблонах, состоящую из различных компонентов и детально настраиваемую платформу, которая идеально подходит для создания приложений, ориентированных на данные. • Dynamic Data может рассматриваться как логическое рас ширение многофункциональных элементов управления данными, которые уже имеют ся в ASP. NET (наподобие Grid. View, Details. View и Form. View). Но вместо того, чтобы заставить изменять множество различных элементов управления данными на множе стве различных страниц для получения желаемого эффекта, Dynamic Data позволяет использовать шаблоны полей, которые определяются один раз и применяются везде. Если объединить такое чистое проектное решение с новыми средствами, такими как проверка достоверности на основе схемы данных и упрощенная фильтрация на основе отношений внешнего ключа, то становится понятной привлекательность Dynamic Data как платформы для разработки веб-приложений, фокусирующихся на просмотре и редактировании записей в базах данных.

Технология Silverlight • Silverlight — быстро развивающая ся технология производства Microsoft , которая позволяет разным браузерамТехнология Silverlight • Silverlight — быстро развивающая ся технология производства Microsoft , которая позволяет разным браузерам в различ ных операционных системах выполнять код. NET. Технология Silverlight работает через подключаемый модуль браузера и снабжает браузер сокращенной версией библиоте ки классов. NET Framework. В ее состав входит мини-версия WPF , которой разработ чики пользуются для создания пользовательских интерфейсов Windows следующего поколения. • В Silverlight все концен трируется вокруг клиентского кода: т. е. , эта технология позволяет созда вать более развитые страницы, чем те, что можно создавать с помощью только HTML , DHTML и Java. Script. Во многих отношениях средства и цели Silverlight аналогичны Adobe Flash. За счет использования Silverlight внутри веб-страницы можно рисовать сложную двухмерную графику, анимировать сцену, а также воспроизводить видео- и другие медиафайлы. • Технология Silverlight идеально подходит для создания мини-аплетов вроде обслужи ваемых в браузере игр, а также является хорошим вариантом для добавления анимаци онных и медиа-эффектов на веб-сайты. • Во многом Silverlight является дополнительной технологией для ASP. NET. В ASP. NET 4 нет никаких средств, которые бы использовали Silverlight , однако на веб-сайте можно смешивать страницы ASP NET и Silverlight или размещать содержимое Silverlight в стра ницах ASP. NET Не исключено, что когда-нибудь разработчикам станут доступны веб-элементы управления ASP NET , способные генерировать содержимое Silverlight. Тогда удастся получить преимущества обоих миров — модель программирования ASP NET серверной стороны и развитые интерактивные возможности Silverlight на стороне кли ента.

Веб-сайты и веб-проекты • В Visual Studio поддерживаются два пути создания веб-приложений на базе ASP. Веб-сайты и веб-проекты • В Visual Studio поддерживаются два пути создания веб-приложений на базе ASP. NET : • Разработка на основе проекта. При создании веб-проекта в Visual Studio гене рируется файл проекта с расширением. csproj (если код пишется на языке С#), в котором фиксируется информация обо всех включаемых в состав проекта файлах и сохраняются кое-какие отладочные параметры. При запуске веб-проекта перед открытием веб-браузера Visual Studio сначала компилирует весь написанный код в одну сборку. • Разработка без использования проекта. Этот подход подразумевает создание просто веб-сайта безо всякого файла проекта. При таком подходе Visual Studio предполагает, что каждый файл в каталоге веб-сайта (и всех его подкаталогах) является частью веб-приложения. В этом случае Visual Studio не требуется предварительно компилировать код. Вместо этого ASP. NET компи лирует уже сам веб-сайт при первом запросе какой-нибудь входящей в его состав страницы.

Создание нового сайта 14 Создание нового сайта

Варианты размещения сайта •  File System •  Local IIS •  FTP Site •Варианты размещения сайта • File System • Local IIS • FTP Site • Remote Web Site

Пустой сайт 16 Пустой сайт

Код пустого сайта @ Page Language=C# Auto. Event. Wireup=true  Code. File=Default. aspx. cs Inherits=_Default Код пустого сайта

Добавление элементов • Перетаскивание в окно дизайнера • Перетаскивание на панель конструктора • Ручное добавление кодаДобавление элементов • Перетаскивание в окно дизайнера • Перетаскивание на панель конструктора • Ручное добавление кода в окно конструктора

Абсолютное позиционирование • По умолчанию используется потоковое позиционирование, используемое в HTML • Существует возможность абсолютного позиционирования:Абсолютное позиционирование • По умолчанию используется потоковое позиционирование, используемое в HTML • Существует возможность абсолютного позиционирования:

Интеллектуальные дескрипторы • Интеллектуальные дескрипторы (смарт-теги) позволяют упростить конфигурирование слож ных элементов управления. Они предлагаются неИнтеллектуальные дескрипторы • Интеллектуальные дескрипторы (смарт-теги) позволяют упростить конфигурирование слож ных элементов управления. Они предлагаются не для всех элементов управления, а только для многофункциональных, таких как Grid. View , Tree. View и Calendar. • О доступности смарт-тега свидетельствует наличие в верхнем правом углу при выбо ре элемента управления небольшой стрелки. Если щелкнуть на этой стрелке, появится окно со ссылками (и другими элементами управления), позволяющими решать задачи бо лее высокого уровня.

Статические дескрипторы • Страницы ASP. NET содержат элементы управления ASP. NET совместно с обычными дескрипторами HTML.Статические дескрипторы • Страницы ASP. NET содержат элементы управления ASP. NET совместно с обычными дескрипторами HTML. Добавляются HTML -дескрипторы либо путем вво да, либо перетаскиванием из соответствующей вкладки в панели Toolbox. • В состав Visual Studio входит удобный конструктор стилей, который позволя ет форматировать любой статический элемент HTML с помощью свойств CSS. Настройка соответствующих свойств выполняется через свойство Style в окне Properties (Свойства). При выборе поля Style появится кнопка с изображени ем троеточия (. . . ). Щелчок на ней приводит к открытию диалогового окна Modify Style (Изменение стиля) с опциями для настройки цветов, шрифта, компоновки и рамки эле мента

Таблицы HTML • Элемент Table вкладки Standard • Строки – свойство Rows • Ячейки – свойствоТаблицы HTML • Элемент Table вкладки Standard • Строки – свойство Rows • Ячейки – свойство строки Cells • В ячейке можно размещать любые другие элементы

Пример таблицы asp: Table ID=Table 1 runat=server Border. Color=Black Border. Style=Double    Height=80 pxПример таблицы Ячейка 1. 1 Ячейка 1. 2 Ячейка 2. 1 Ячейка 2. 2

Пример таблицы 24 Пример таблицы

Структурирование разметки • Для форматирования одного и того же фрагмента HTML -кода существует большое количество способов.Структурирование разметки • Для форматирования одного и того же фрагмента HTML -кода существует большое количество способов. Однако то, сколько именно должно быть отступов, и какой долж на быть длина строки, каждый разработчик выбирает самостоятельно. Из-за обилия возможных вариантов Visual Studio принудительно никакого формати рования всегда сохраняет ту схему применения заглавных букв и отступов, которую использует разработчик. • Чтобы помочь разобраться с этим, Visual Studio предлагает функ цию, которая позволяет определить желаемые правила и затем применять их где угод но. Для ее демонстрации необходимо переключить страницу в режим Source. Затем следует выделить какой-нибудь произвольный фрагмент HTML -кода, щелкнуть на нем правой кнопкой мыши и выбрать в контекстном меню пункт Format Selection (Форматировать выделен ный фрагмент). После этого Visual Studio автоматически исправит выделенное HTML — содержимое, расставив правильно заглавные буквы, отступы и окончания строк. • Хотя Visual Studio использует собственные целесообразные параметры по умолчанию, у разработчика имеется возможность настроить их произвольным образом. Чтобы сделать это, находясь в режиме Source , следует щелкнуть правой кнопкой мыши в любом месте и выбрать в кон текстном меню пункт Formatting and Validation (Форматирование и проверка досто верности).

Основные типы файлов в приложении ASP. NET Расширение или имя файла Описание. aspx Веб-страницы ASP. NET.Основные типы файлов в приложении ASP. NET Расширение или имя файла Описание. aspx Веб-страницы ASP. NET. Содержат пользовательский интерфейс и (необязательно) базовый код приложения. Пользователи запрашивают одну из этих страниц напря мую или же переходят непосредственно на нее для запуска веб- приложения. . ascx Пользовательские элементы управления ASP. NET , подобные веб-страницам, за исключением того, что к ним нельзя получить прямой доступ. Наоборот, они должны находиться внутри веб-страницы ASP NET. . asmx или . svc Веб-службы ASP. NET , работающие не так, как веб-страницы, но все равно со вместно использующие одни и те же ресурсы приложений, параметры конфи гурации и память. web. config Основанный н a XML конфигурационный файл приложения ASP. NET. Содержит параметры, необходимые для настройки безопасности, управ ления состоянием, управления памятью и т. д. В веб-проекте допуска ется использовать различные вариации этого файла, предназначенные для разных сценариев развертывания (вроде web. Debug. config , web. Release. config и т. д. ). Эта возможность, называемая трансфор мацией web. config , может применяться только к пакетам установки. global. asax Глобальный файл приложения, который можно использовать для опреде ления глобальных переменных и реакции на глобальные события, такие как первый запуск приложения. Visual Studio не создает файл global. asax по умолча нию — его следует добавлять самостоятельно. cs Файлы отделенного кода, содержащие код С#. Они позволяют отделить приложение от пользовательского интерфейса веб-страницы.

Вкладки Toolbox слайд 1/2 Вкладка Описание Standard (Стандартные) На этой вкладке представлены многофункциональные серверные элементы управления,Вкладки Toolbox слайд 1/2 Вкладка Описание Standard (Стандартные) На этой вкладке представлены многофункциональные серверные элементы управления, которые являются главными в модели веб-форм ASP. NET Data (Данные) Компоненты, предлагаемые на этой вкладке, позволяют устанавливать соединение с базой данных. Здесь доступны как невизуальные элементы управления источниками данных, которые можно перетаскивать на форму и конфигурировать во время проектирования (не используя никакого кода), так и элементы управления отображением данных наподобие сеток Validation (Проверка достоверности) Элементы управления на этой вкладке позволяют проверять принимающий входные данные связанный элемент управления на предмет соблюдения определенных пользователем правил. Эти правила могут гласить, напри мер, что данный элемент управления не может быть пустым (не запол ненным входными данными), что вводимые в нем данные должны иметь формат числа, что это число должно быть обязательно больше конкретного значения и т. д. Navigation (Навигация) Элементы управления, предлагаемые на этой вкладке, предназначены для отображения карт сайтов и предоставления пользователю возможности пе реходить с одной на страницы на другую. Login (Вход в систему) Элементы управления, предлагаемые на этой вкладке, предоставляют за готовленные решения для обеспечения безопасности вроде окон входа в систему и мастера создания новых пользователей.

Вкладки Toolbox слайд 2/2 Вкладка Описание Web. Parts (Веб-части) Набор элементов управления, предлагаемых на этой вкладке,Вкладки Toolbox слайд 2/2 Вкладка Описание Web. Parts (Веб-части) Набор элементов управления, предлагаемых на этой вкладке, поддержива ет Web Parts — модель ASP. NET для построения состоящих из компонентов и детально конфигурируемых веб-порталов. AJAX Extensions (Расширения AJAX ) На этой вкладке расположены элементы управления, которые используют «за кулисами» технологию ASP. NET AJAX , позволяя обновлять отдельные части страницы без выполнения полной обратной отправки. Dynamic Data (Динамические данные) На этой вкладке расположены элементы управления, которые являются частью ASP. NET Dynamic Data — вспомогательной системой ASP. NET для построения управляемых данными веб-сайтов с использованием интеллек туальных шаблонов. Reporting (Составление отчетов) Эта вкладка включает элемент управления Reportviewer, который по зволяет генерировать отчеты по базе данных (во многом подобно пакету Crystal Reports ). Узнать больше о нем можно по, адресу http: //msdn. microsoft. com/ru-ru/library/bb 885185(v=VS. %20100). aspx HTML Эта вкладка позволяет перетаскивать статические элементы HTML. При же лании ее также можно использовать и для создания серверных элементов управления HTML , просто перетаскивая с нее статический элемент HTML на страницу, переключаясь в режим Source и добавляя в дескриптор элемен та управления атрибут runat=»server» General (Общие) Эта вкладка предоставляет хранилище для фрагментов кода и объектов управления. Разработчик может просто перетаскивать их сюда и вытаски вать их тогда, когда ему снова понадобится их использовать

Простейший сайт ASP. NET 29 Простейший сайт ASP. NET

Простейший сайт ASP. NET • ASP. NET – управляемая событиями ( event - driven ) Простейший сайт ASP. NET • ASP. NET – управляемая событиями ( event — driven ) технология. protected void Button 1_Click(object sender, Event. Args e) { Label 1. Text = «Сейчас » + Date. Time. Now. To. Long. Date. String() + » » + Date. Time. Now. To. Long. Time. String(); }

Простейший сайт ASP. NET 31 Простейший сайт ASP. NET

Веб-проект • Хотя веб-проекты и беспроектные веб-сайты дают одинаковый конечный результат после развертывания и компиляции наВеб-проект • Хотя веб-проекты и беспроектные веб-сайты дают одинаковый конечный результат после развертывания и компиляции на веб-сервере, есть некоторые отличия в способе, которым они структурируются во время проектирования. – Компиляция. При запуске веб-проекты компилируют ся Visual Studio (а не ASP. NET ). Классы веб-страниц объединяются в одну сборку, которая получает то же имя, что и у веб-проекта (например, Web. Application ) и затем размещается в папке Bin. – Отделенный код. Веб-страницы в веб-проекте всегда используют модель отделенно го кода. Однако они включают один дополнительный файл с расширением. aspx. designer. cs , в котором содержатся объявления для всех элементов управления веб страницы. Во время компиляции эти два файла будут объединены. В беспроектном веб-сайте файл с объявлениями элементов управления разработчику недоступен, поскольку эта часть кода генерируется во время компиляции системой ASP. NET. – Директива Page. В веб-страницах веб-проекта директива Page выглядит немного по-другому. Для указания на файл с исходным кодом вместо атрибута Code. File в ней применяется атрибут Code. Behind. Это отличие тоже связано с тем, что ком пиляцию осуществляет Visual Studio , а не ASP. NET. Среда ASP. NET проверяет ат рибут Code. File , a Visual Studio — атрибут Code. Behind. – Ссылки на сборки. В беспроектном веб-сайте все ссылки на сборки фиксируют ся в файле web. config , так что ASP. NET может использовать их при разрешении ссылок во время компиляции. Но в веб-проекте ссылки на сборки сохраняются в файле проекта, к которому Visual Studio обращается при компиляции кода. .

Пространства имён System Базовый набор типов данных. NET System. Configuration Классы для манипуляции конфигурационной информацией изПространства имён System Базовый набор типов данных. NET System. Configuration Классы для манипуляции конфигурационной информацией из файла web. config System. Data Классы для работы с базами данных System. Drawing Классы, предназначенные для построения графики средствами GDI+ System. Web Основные классы ASP. NET System. Web. Services Классы для построения Web- служб System. Xml Классы для работы с данными, представленными в формате XML System. Enterprise. Services Классы для построения служб COM+ System. Web. Mobile Классы для мобильных элементов управления

Добавление ссылки 34 Добавление ссылки

Пространства имён, подключённые по умолчанию • using System;  • using System. Collections. Generic;  •Пространства имён, подключённые по умолчанию • using System; • using System. Collections. Generic; • using System. Linq; • using System. Web. UI; • using System. Web. UI. Web. Controls;

Web - формы • C траницы ASP. NET (официально называемые веб-формами) являются важной частью приложения ASP.Web — формы • C траницы ASP. NET (официально называемые веб-формами) являются важной частью приложения ASP. NET. Они обеспечивают фактический вывод веб-при ложения — веб-страницы, которые клиенты запрашивают и просматривают в своих браузерах. • Фактически, веб-формы позволяют создавать веб-приложения с точно таким же осно ванным на элементах управления интерфейсом, как и у Windows -приложений. Чтобы запустить веб-форму ASP. NET , механизм ASP. NET считывает весь файл. aspx , генери рует соответствующие объекты и инициирует ряд событий, а разработчик реагирует на эти события с помощью полностью объектно-ориентированного кода. • 2 основные сложности: – Web – приложения выполняются на сервере – Web – приложения не поддерживают состояния объектов формы

Web- формы в ASP. NET 4 В ASP. NET 4 модель веб-форм претерпела несколько в основномWeb- формы в ASP. NET 4 В ASP. NET 4 модель веб-форм претерпела несколько в основном небольших изменений. • Визуализация согласно стандарту XHTML Strict. Хотя версию ASP. NET 3. 5 можно было сконфи гурировать на визуализацию XHTML Strict , по умолчанию присутствовало несколько особенностей. В ASP. NET 4 эти особенности были устранены, а это значит, что страницы веб-форм теперь всегда будут на 100% совместимыми с XHTML. • Назначение предсказуемых клиентских идентификаторов. Чтобы каждый элемент управления получал уникальный идентификатор в визуализируемом HTML -коде, в ASP. NET используется система генерации длинных имен. В ASP. NET 4 можно настраивать работу системы генерации имен для каждой страницы. • Новые свойства Html. Head. Теперь можно устанавливать метадескрипторы description и keywords через специальные свойства класса Html. Head. • Постоянная переадресация. С целью улучшения поисковой оптимизации в ASP. NET теперь можно перенаправлять запросы с кодом состояния HTTP 301, который обозначает постоянную переадресацию. Когда роботы поисковых систем получают это сообщение, они обновляют свои каталоги.

Формы HTML html xmlns=http: //www. w 3. org/1999/xhtml head runat=server title/title /head body form id=form 1Формы HTML

Enter your first name:   Enter your last name:   You program with:   C#   VB. NET

string Name 1= Request. Form[“Name 1”] string Name 1= Name 1. Text 39 string Name 1= Request. Form[“Name 1”] string Name 1= Name 1. Text

Динамический пользовательский интерфейс if (Name 1. Text != ) Name 1. Fore. Color = Color. Red;Динамический пользовательский интерфейс if (Name 1. Text != «») Name 1. Fore. Color = Color. Red;

Модель событий ASP. NET • Управляемая событиями модель обработки ( event – driven model ) 1.Модель событий ASP. NET • Управляемая событиями модель обработки ( event – driven model ) 1. При первом запуске создаётся объект страницы и элементы управления. Выполнение кода инициализации, преобразование в HTML , передача клиенту, удаление из памяти сервера 2. Пользователь выполняет действие, требующее обработки события (нажатие кнопки). Страница отправляется серверу вместе с данными формы 3. ASP. NET воссоздаёт форму и обновляет пользовательские данные 4. Определение выполненной операции и выполнение соответствующих действий. 5. Преобразование обновлённой страницы в HTML и возвращение её клиенту. Данные из памяти удаляются ASP. NET использует данные формы не только для конфигуриро вания объектов имеющихся на странице элементов управления, но также и для при нятия решения о том, какие события запускать. Например, заметив, что с момента по следней обратной отправки данных текст, отображаемый в текстовом поле, изменился, ASP NET запустит событие, необходимое для того, чтобы уведомить об этом страницу. Реагировать на это событие или нет — уже выбирать самому разработчику. • Недостаток: постоянный обмен данными с сервером. Решение: Microsoft AJAX

Автоматическая обратная отправка • В системе событий, которая была описана выше, имеется один пробел. Традиционно разработчикиАвтоматическая обратная отправка • В системе событий, которая была описана выше, имеется один пробел. Традиционно разработчики имеют дело с полнофункцио нальной моделью событий, позволяющей коду реагировать на перемещения мыши, нажатия клавиш клавиатуры и мгновенные взаимодействия элементов управления. Но в ASP NET действия клиента происходят на стороне клиента, а серверная обработ ка осуществляется на веб-сервере. Следовательно, ответ на событие всегда влечет за собой определенные накладные расходы. Поэтому быстро генерируемые события в ASP. NET являются совершенно непрактичными. • При использовании формам HTML для отправки страни цы существует один довольно распространенный способ — щелчок на кнопке Submit (Отправить). В случае использования в веб-формах. aspx стандартных серверных эле ментов управления HTML этот способ вообще является единственно возможным вари антом. Однако после того как обратная отправка страницы уже произошла, ASP. NET может тут же генерировать другие события (например, события, уведомляющие о том, что значение в элементе управления вводом изменилось). • Очевидно, что для создания полнофункциональной веб-формы этого не достаточно. Предлагаемые в ASP NET веб-элементы управления дополняют эту модель средством автоматической обратной отправки. С помощью этого средства элементы управления вводом могут генерировать различные события, на которые серверный код может немедленно отвечать. Например, разработчик может инициировать обратную отправ ку, когда пользователь щелкает на флажке, меняет выбор в списке либо изменяет текст в текстовом поле, а затем переходит на другое поле. Эти события не являются такими же модульными, как события в Windows -приложении, однако они представляют собой значительный шаг вперед по сравнению с применением кнопки Submit.

Состояние представления • Состояние представления решает проблему утраты информации об изменениях.  • Строка в форматеСостояние представления • Состояние представления решает проблему утраты информации об изменениях. • Строка в формате Base 64 , описывающая свойства элементов страницы, отличающихся от заданных по умолчанию • При обратной отправке происходят следующие действия: 1. Объект страницы и его элементы воссоздаются на основе значений по умолчанию 2. Десериализация информации о состоянии и обновление элементов управления 3. Настройка страницы в соответствии с отправленными данными формы 4. Собственно выполнение кода обработки события

html xmlns=http: //www. w 3. org/1999/xhtml  headtitle /title/head body form name=form 1 method=post action=Default. aspx

Enter name 1: Enter name 2: Enter program language:

Этапы обработки Web  – форм (текст) 1. Инициализация структуры страницы – создание страницы и десериализацияЭтапы обработки Web – форм (текст) 1. Инициализация структуры страницы – создание страницы и десериализация информации о состоянии (при необходимости) 2. Инициализация кода пользователя – событие Page. Load. Запускается всегда. Предназначено для установки первоначальных значений параметров элементов управления 3. Проверка достоверности – проверка достоверности значений и страницы в целом 4. Обработка событий – события, требующие немедленного ответа и события изменения 5. Автоматическая привязка данных 6. Очистка – преобразование формы в HTML и запускается реальная очистка. События Page. Unload и Page. Disposed

Этапы обработки Web- форм 46 Этапы обработки Web- форм

Расшифровка строки состояния • Строка состояния представления не является читабельной для человека :  она выРасшифровка строки состояния • Строка состояния представления не является читабельной для человека : она вы глядит просто как последовательность случайных символов. Тем не менее , важно отме тить , что при желании пользователь может приложить немного усилий и довольно лег ко расшифровать ее. Ниже показан фрагмент кода . NET, который делает это и выводит расшифрованную информацию на веб — странице : // view. State. String содержит информацию состояния представления. // Преобразовать строку Base 64 в обычный массив байт , // представляющих ASCII- символы. byte[] string. Bytes = Convert. From. Base 64 String(view. State. String); // Выполнить десериализацию и отобразить строку. string decoded. View. State = System. Text. Encoding. ASCII. Get. String(string. Bytes); lbl. Text = decoded. View. State; • В расшифрованном виде в строке с информацией о состоянии можно отчетливо рассмотреть текст элемента управления. Поэтому состояние представле ния является не лучшим местом для хранения секретной информации , которую клиент не должен видеть , поэтому данные такого рода следует оставлять на сервере. • Существует возможность усилить безопасность данных состояния пред ставления: можно включить функцию автоматического хеширования для предотвра щений попыток изменения состояния представления, а можно даже зашифровать со стояние представления для исключения вероятности его расшифровки.

Страница как контейнер слайд 1/2 • Для визуализации страницы веб-форме необходимо взаимодей ствовать со всеми входящимиСтраница как контейнер слайд 1/2 • Для визуализации страницы веб-форме необходимо взаимодей ствовать со всеми входящими в ее состав элементами управления. Фактически, веб-форма сначала визуализируется сама, а затем просит все элементы управления на странице тоже визуализироваться. Каждый из этих элементов управления, в свою очередь, может содержать дочерние элементы управления, причем все они также самостоятельно отве чают за код визуализации. По мере того, как элементы управления визуализируются, страница собирает генерируемую HTML -разметку в завершенную страницу. • При первом создании страницы (в ответ на HTTP -запрос) ASP. NET инспектирует файл. aspx. Для каждого обнаруживаемого там элемента с атрибутом runat =» server » ASP. NET создает и настраивает объект элемента управления, после чего добавляет этот элемент управления в виде дочернего элемента управления страницы. Просмотреть все дочерние элементы управления страницы можно в коллекции Page. Controls.

Страница как контейнер слайд 2/2 • Page. Controls  protected void Page_Load(object sender, Event. Args e)Страница как контейнер слайд 2/2 • Page. Controls protected void Page_Load(object sender, Event. Args e) { foreach (Control control in Page. Controls) { Response. Write(control. Get. Type(). To. String()+» — «+ control. ID+» «); } Response. Write(«


«); } • control. Controls

50

Заголовок страницы • В дополнение к добавляемым разработчиком элементам управления веб-форма может также содержать отдельный элементЗаголовок страницы • В дополнение к добавляемым разработчиком элементам управления веб-форма может также содержать отдельный элемент управления Html. Head, предоставляющий серверный доступ к дескриптору . • По умолчанию Visual Studio всегда делает дескриптор серверным элементом управления в отличие от предыдущих версий ASP. NET. • Как и в случае с другими серверными элементами управления, можно использо вать элемент управления Html. Head для программного изменения содержимого, преоб разуемого в дескрипторе . Различие заключается в том, что дескриптор не соответствует фактическому содержимому, которое можно увидеть на веб-страни це. Вместо этого он содержит другие детали вроде заголовка, дескрипторов метадан ных (полезных для предоставления ключевых слов в поисковых системах) и ссылок на таблицы стилей.

Свойства класса Html. Head 52 Свойство Описание Title Заголовок HTML -страницы, который обычно отображается в строкеСвойства класса Html. Head 52 Свойство Описание Title Заголовок HTML -страницы, который обычно отображается в строке заголовка браузера. Значение этого свойства можно изменять во время выполнения Style. Sheet Объект IStyle. Sheet, который отвечает за определяемые в заголовке внутристрочные стили. Объект IStyle. Sheet можно также использовать для динамического создания новых правил стиля путем написания кода, вы зывающего методы Create. Style. Rule () и Register. Style () Desription Текст в метадескрипторе description, который применяется для созда ния описания веб-сайта в поисковых системах Keywords Текст в метадескрипторе keywords. Когда-то этот метадескриптор исполь зовался поисковыми системами для определения поисковых рейтингов для конкретных запросов, теперь он практически всеми игнорируется Controls Используя эту коллекцию и класс Html. Meta, можно программно добавлять и удалять дескрипторы метаданных. Это удобно, когда нужно добавить метадескрипторы, отличные от description и keywords

Создание динамического элемента управления С использованием коллекции Controls можно программно создать и добавить к странице элементСоздание динамического элемента управления С использованием коллекции Controls можно программно создать и добавить к странице элемент управления. Ниже показан пример генерации новой кнопки и ее до бавления в панель на странице. private void Page_Load(object sender, Event. Args e) { // Create a new button object. Button new. Button = new Button(); // Assign some text and an ID so you can retrieve it later. new. Button. Text = «* Dynamic Button»; new. Button. ID = «new. Button»; // Attach an event handler to the Button. Click event. new. Button. Click += dynamic. Button_Click; // Add the button to a placeholder. Place. Holder 1. Controls. Add(new. Button); } При использовании динамических элементов управления следует помнить, что они будут существовать только до следующей обратной отправки. ASP. NET не будет повтор но создавать динамически добавленный элемент управления. Если нужно создавать эле мент управления несколько раз, это следует делать в обработчике событий Page. Load.

Создание динамического элемента управления • Если возникнет необходимость взаимодействовать с элементом управления позже, ему следует назначитьСоздание динамического элемента управления • Если возникнет необходимость взаимодействовать с элементом управления позже, ему следует назначить уникальный идентификатор. Этот идентификатор можно использовать для извлечения элемента управления из коллекции Controls контейнера. Найти элемент управления можно примени d статический ме тод Page. Find. Control (), который производит поиск элемента управления с заданным идентификатором в коллекции Page. Controls верхнего уровня. Ниже приведен при мер, в котором с помощью метода Find. Control () осуществляется поиск динамически добавленного элемента управления, который затем удаляется. protected void cmd. Remove_Click(object sender, System. Event. Args e) { // Search for the button, no matter what level it’s at. Button found. Button = (Button)Page. Find. Control(«new. Button»); // Remove the button. if (found. Button != null) { found. Button. Parent. Controls. Remove(found. Button); } }

Класс Page • Свойства: 1. Session – хранение данных, которые должны постоянно существовать между запросами WebКласс Page • Свойства: 1. Session – хранение данных, которые должны постоянно существовать между запросами Web – страниц. Состояние сеанса часто применяет ся для обслуживания информации наподобие имени и идентификатора пользователя, покупательской тележки либо других элементов, удаляемых, когда пользователь уже не посещает страницы веб-сайта. 2. Application – то же, хранимые данные являются глобальными для всего приложения 3. Cache – хранение глобальной информации с более масштабируемым механизмом хранения 4. Request – представляет значения и свойства HTTP – запроса, который привёл к загрузке страницы. В нем содержатся все параметры, касающиеся URL , а также все остальные данные, которые были отправлены клиентом. 5. Response – ответ Web – сервера на запрос клиента 6. Server – предоставляет доступ к свойствам и методам на сервере 7. User – информация о пользователе, запрашивающем Web – сервер и проверка принадлежности пользователя к определённой роли 8. Trace – универсальный класс трассировки

Объект Response – свойства слайд 1/2 56 Свойство Описание Anonymous. ID Уникальным образом идентифицирует текущего пользоваОбъект Response – свойства слайд 1/2 56 Свойство Описание Anonymous. ID Уникальным образом идентифицирует текущего пользова теля, если был включен анонимный доступ. Application. Path и Physical. Application. Path извлекает информацию о месте размещения виртуального каталога приложения ASP. NET ( URL -адрес), a Physical. Path — о месте размещения его «реального» каталога Browser Предоставляет ссылку на объект Http. Browser. Capabilities , в котором содержатся свойства, описывающие различные функциональные воз можности браузера, наподобие наличия в нем поддержки для элементов управления Active. X , соо ki е-наборов, сцена риев VBScript и фреймов Client. Certificate Объект Http. Client. Certificate , предоставляющий сертификат безопасности для текущего запроса, если тако вой существует Cookies Предоставляет коллекцию соо ki е-наборов, отправляемых с этим запросом. File. Path и Current. Execution. File. Path Возвращают реальный путь к файлу (относительно сервера) для выполняемой в данный момент страницы. File. Path представляет страницу, запустившую процесс выполнения. Это то же самое, что и Current. Execution. File. Path , если пользователь не переместился на новую страницу без перенаправления (например, с помо щью метода Server. Transfer ()), в случае чего Current. Execution. File. Path отражает новую страницу, a File. Path определяет исходную страницу Form Представляет коллекцию переменных формы, обратно отправляемых странице. В большинстве случаев вместо использования данного коллекции эта информация извлекается из свойств элемента управления Headers и Server. Variables Предоставляют словарную коллекцию HTTP -заголовков и серверных переменных с индексацией по имени. Эти коллекции по большей части состоят из низкоуровневой информации, которая отправлялась браузером вместе с веб-запросом (например, информации о типе браузе ра, поддерживаемых им функциональных возможностях, установленных языковых параметрах, удостоверениях, используемых для аутентификации данных, и т. д. ). Обычно эту информацию гораздо легче получить из других свойств объекта Http. Request или высокоуровневых классов ASP. NET

Объект Response – свойства слайд 2/2 Is. Authenticated и Is. Secure. Connection Возвращают true в случаеОбъект Response – свойства слайд 2/2 Is. Authenticated и Is. Secure. Connection Возвращают true в случае успешной аутентификации пользователя и подключения пользователя по протоколу защищенных сокетов ( Secure Sockets Layer — SSL ) Is. Local Возвращает true , если пользователь запрашивает страни цу с локального компьютера Query. String Предоставляет параметры, переданные в строке запроса. Url и Url. Referrer Выдают объект Uri , представляющий текущий адрес страницы и страницу, с которой переходит пользователь (предыдущую страницу, содержащую ссылку на данную страницу) User. Agent Строка, представляющая тип браузера. Internet Explorer предоставляет для этого свойства значение MS IE. ASP. NET использует эту информацию для выяснения того, о браузере какого типа идет речь, и, следовательно, для определения, какие функциональные возможности этот браузер должен поддерживать (такие как cookie -наборы, сценарии Java. Script и т. д. ). Это, в свою очередь, может влиять на способ визуализации веб-элементов управления. User. Host. Address и User. Host. Name Извлекают информацию об IP -адресе и DNS -имени удален ного клиента. К этой информации также можно получать доступ и через коллекцию Server. Variables. Однако из-за трансляции сетевых адресов ( Network Address Translation — NAT ) она не всегда бывает значимой. В зави симости от способа подключения к Интернету, многие кли енты могут использовать совместно один и тот же IP -адрес (например, IP -адрес шлюзового компьютера). Помимо этого, IP -адрес также еще может и меняться после выпол нения нескольких запросов User. Languages Предоставляет отсортированный строковый массив, в кото ром перечислены языковые предпочтения клиента. Может быть полезно при создании многоязычных страниц

Объект Response - методы Метод Описание Add. Header Устанавливает заданный заголовок HTML  файла равным значениюОбъект Response — методы Метод Описание Add. Header Устанавливает заданный заголовок HTML файла равным значению Append. To. Log Добавляет строку в конец записи журнала Web — сервера, относящейся к этому запросу Binary. Write Записывает предоставленную информацию в текущий вывод HTTP без преобразования наборов символов Clear Стирает любой буферизированный вывод HTTP End Останавливает обработку ASP файла и возвращает текущий результат Flush Немедленно передаёт буферизированный вывод Redirect Отправляет браузеру сообщение о перенаправлении, вызывая попытку обозревателя подключиться к другому URL. Write Записывает переменную или текст в виде строки в текущий вывод HTTP

Объект Request – свойства и методы слайд 1/3 59 Метод или свойство Описание Buffer. Output КогдаОбъект Request – свойства и методы слайд 1/3 59 Метод или свойство Описание Buffer. Output Когда это свойство установлено в true (значение по умолчанию), страница не отправляется клиенту до тех пор, пока не будет визуа лизирована и готова к отправке полностью, вместо того, чтобы от правляться по частям. В некоторых специфических сценариях имеет смысл устанавливать это свойство в false. Наиболее очевидным примером является ситуация, когда клиент загружает большой файл. Если свойство Buffer. Output установлено в false, клиент увидит диалоговое окно Save (Сохранить) и сможет выбрать имя файла, прежде чем этот файл будет загружен полностью Cache Это свойство ссылается на объект Http. Cache. Policy, который позволяет конфигурировать кэширование вывода. Cookies Это свойство предоставляет доступ к коллекции cookie -наборов, отправляемых вместе с ответом. Его можно использовать для до бавления дополнительных cookie -наборов Expires и Expires. Absolute Эти свойства можно использовать при кэшировании визуализируе мого HTML -кода страницы, улучшающем показатели производи тельности при последующих запросах. Is. Client. Connected Это булевское значение, показывающее, подключен ли клиент к серверу. Если он уже не подключен, может потребоваться остано вить какую-нибудь длинную операцию Redirect() Этот метод заставляет браузер запросить другой URL -адрес, который указывает на новую страницу веб-приложения или на другой веб-сайт Redirect. Permanent() Этот метод перенаправляет браузер на новый URL -адрес, во мно гом подобно методу Redirect (). Разница в том, что он исполь зует код состояния HTTP 301 (который указывает на то, что страни ца была перемещена навсегда), а не 302 (который указывает на то, что страница была перемещена временно)

Объект Request – свойства и методы слайд 2/3 Redirect. To. Route() и Redirect. To. Route. Permanent()Объект Request – свойства и методы слайд 2/3 Redirect. To. Route() и Redirect. To. Route. Permanent() Эти методы ПОХОЖИ на методы Redirect () и Redirect. Permanent (). Единственное отличие в том, что они используют маршрут (зареги стрированный шаблон URL , который не отображается непосредст венно на страницу). Transfer() Этот метод сообщает ASP. NET прекратить обработку текущей стра ницы и перейти к новой (указанной) странице с веб-формой. При этом не требуются полный цикл отправки и уведомление браузера и пользователя веб-приложения Transfer. Request() Этот метод похож на Transfer (), но позволяет переносить поль зователя на страницу другого типа. Например, его можно применять для отправки пользователя с веб-формы ASP. NET на HTML -страницу. Когда он используется, в действие приводится весь конвейер IIS для обработки нового ресурса, вместе со всеми соответствующими модулями HTTP. Но с методом Transfer. Request () связан ряд существенных ограничений. Для его применения должен использо ваться веб-сервер I IS 7 в интегрированном режиме. Кроме того, по надобится освободить состояние сеанса (если оно было получено) для предотвращения длительных задержек Content. Type Это свойство представляет заголовок, указывающий браузеру, содержи мое какого типа он должен получить. Обычно в веб-формах ASP. NET , как и во всех веб-страницах, используется содержимое типа text/html (текст вперемешку с HTML ). Однако в принципе может быть создан специальный обработчик HTTP , обслуживающий содержимое других типов. Например, этим приемом можно воспользоваться для динамического создания изо бражения, в случае чего потребуется обработчик HTTP , обслуживающий содержимое типа image/gif. Подробный перечень типов HTTP MIME дос тупен по следующему адресу: http: //www. w 3 schools. com/media_mimeref. asp Output. Stream Это свойство представляет данные, отправляемые браузеру в виде потока низкоуровневых байтов. Его можно использовать для подключения к мо дели потоков. NET

Объект Request – свойства и методы слайд 3/3 Write () Этот метод позволяет записывать текст прямоОбъект Request – свойства и методы слайд 3/3 Write () Этот метод позволяет записывать текст прямо в поток ответа. Обычно вме сто него лучше применять модель элементов управления и позволять эле ментам управления генерировать собственную HTML -разметку. При попыт ке использовать метод Response. Write () вместе с моделью элементов управления разработчик лишается возможности решать, где именно на странице должен размещаться текст. Однако метод Response. Write () важен в ситуациях, когда элементы управления, генерирующие собствен ное HTML -представление, должны быть построены с нуля. Binary. Write () и Write. File () Эти методы позволяют брать двоичное содержимое из массива байтов или файла и записывать его прямо в поток ответа. Использовать их вместе с серверными элементами управления не имеет смысла, но они могут быть очень полезны при создании специального обработчика HTTP. Например, можно создать HTTP -обработчик, считывающий данные для PDF -документа из записи в базе данных и записывающий их непосредственно в поток от вета с помощью метода Binary. Write (). На стороне клиента конечный результат будет выглядеть точно так же, как и если бы пользователь загру жал статический PDF -файл. При выполнении записи отличного от HTML содер жимого следует установить соответствующее значение для свойства Content. Type

Объект Server - методы Метод Описание Create. Object Создаёт экземпляр серверного компонента Execute Выполняет ASP –Объект Server — методы Метод Описание Create. Object Создаёт экземпляр серверного компонента Execute Выполняет ASP – файл Get. Last. Error Возвращает объект ASPError , который описывает состояние ошибки HTMLEncode Применяет кодирование HTML к указанной строке Map. Path Сопоставляет указанный виртуальный путь с физическим путём Transfer Передаёт всю информацию о текущем состоянии другому ASP – файлу для обработки URLEncode Применяет правила кодирования адресов URL , включая управляющие символы, к строке

Объект Session - свойства Свойство Описание Code. Page Задаёт кодовую страницу для представления данных во внутреннихОбъект Session — свойства Свойство Описание Code. Page Задаёт кодовую страницу для представления данных во внутренних объектах в ходе всего сеанса. Кодовая страница указывает серверу на способ кодирования знаков для разных языков LCID Задаёт LCID для данных при выводе одной страницы. Данный параметр определяет формат даты, времени и обозначения денежной единицы для конкретного географического региона. Session. ID Возвращает идентификатор сеанса для пользователя Time. Out Время ожидания для того, чтобы сеанс пользователя состоялся (в минутах)

Кодирование HTML и URL • Label 1. Text= Server. Html. Encode ( То bold text useКодирование HTML и URL • Label 1. Text= Server. Html. Encode (» То bold text use the tag”); • Label 1. Text = » То bold text use the «; • Label 1. Text += Server. Html. Encode(««) + » tag. «; • Метод Html. Encode () особенно полезен, если выполняется извлечение значения из базы дан ных и нет уверенности в том, что получаемый текст является допустимой HTML -разметкой. С помощью метода Html. Decode () можно привести текст в нормальную форму, если необходимо выполнять над ним дополнительные операции или сравнения в коде.

Объект User • Объект User представляет информацию о пользователе,  запрашивающем веб-сер вер, и позволяет проверитьОбъект User • Объект User представляет информацию о пользователе, запрашивающем веб-сер вер, и позволяет проверить принадлежность этого пользователя к роли. • Объект User реализует интерфейс System. Security. Principal. IPrincipal. Определенный класс зависит от используемого типа аутентификации. Например, поль зователя можно аутентифицировать на основе информации об учетной записи Windows с использованием IIS или же с помощью специальной базы данных и выделенной стра ницы входа в систему. Объект User предоставляет полез ную информацию только в том случае, если веб-приложение выполняет какую-то разно видность аутентификации, которая ограничивает доступ анонимных пользователей.

Объект Trace • Объект Trace является универсальным объектом трассировки (и экземпляром клас са System.  Web.Объект Trace • Объект Trace является универсальным объектом трассировки (и экземпляром клас са System. Web. Trace. Context ). Он позволяет записывать информацию в журнал на уровне страниц. Этот журнал содержит подробную информацию о синхронизации, чтобы разработчик не только мог видеть объект Trace для отладки, но и использовать его для мониторинга производительности и синхронизации. Более того, журнал трассировки также содержит набор разнообразной информации, организованной в несколько разде лов.

Разделы журнала трассировки Раздел Описание Request Details (Детали запроса) В этом разделе содержится некоторая базовая информацияРазделы журнала трассировки Раздел Описание Request Details (Детали запроса) В этом разделе содержится некоторая базовая информация о контексте запроса, в том числе идентификатор текущего сеанса, время совершения веб-запроса, а также тип веб-запроса и кодировка Trace Information ( Трассировочная информация ) В этом разделе отображены разные этапы обработки, прой денные страницей перед отправкой клиенту. Каждый раздел содержит дополнительную информацию о том, сколько времени ушло на выполнение с начала первого этапа Control Tree (Дерево элементов управления) Дерево элементов управления отображает все элементы управления страницы с отступами, соответствующими их иерархии. Полезной осо бенностью этого раздела является столбец Viewstate , сооб щающий количество байт пространства, необходимых для сохранения текущей информации в элементе управления. Session State (Состояние сеанса) и Application State (Состояние приложения) В этих разделах отображается каждый элемент, находящий ся в текущем состоянии сеанса либо приложения. Каждый элемент приводится с именем, типом и значением. Cookies Collection (Коллекция соо ki е-наборов) В этом разделе отображаются все соо ki е-наборы, от правляемые с запросом, а также содержимое и размер каждого cookie -н a б opa в байтах. Headers Collection (Коллекция заголовков) В этом разделе перечислены все HTTP -заголовки, связан ные с запросом Forms Collection (Коллекция форм) В этом разделе перечислена информация обратной отправ ки форм Query. String Collection (Коллекция строк запроса) В этом разделе перечислены переменные и значения, пере даваемые в сроке запроса Server Variables (Серверные переменные) В этом разделе перечислены все серверные переменные вместе с их содержимым

Серверные элементы управления • Серверные элементы управления ASP. NET являются неотъемлемой частью архи тектуры ASP. NET.Серверные элементы управления • Серверные элементы управления ASP. NET являются неотъемлемой частью архи тектуры ASP. NET. Фактически, серверные элементы управления представляют собой классы в среде . NET Framework , представляющие визуальные элементы веб-формы. Некоторые из этих классов являются относительно простыми и соответствуют опре деленным HTML -дескрипторы. Другие элементы управления намного более абстрактны и реализуют более сложное представление нескольких элементов HTML.

Типы серверных элементов управления • Серверные элементы управления HTML.  Это классы, в которых содержатся станТипы серверных элементов управления • Серверные элементы управления HTML. Это классы, в которых содержатся стан дартные HTML -элементы. За исключением атрибута runat=»server» объявление серверных элементов управления HTML ничем не отличается от объявления дру гих элементов управления. Двумя наиболее яркими представителями серверных элементов управления являются Html. Anchor (представляющий дескриптор ) и Html. Select (представляющий дескриптор ). Однако в принципе в сер верный элемент управления может быть преобразован любой дескриптор. • Веб-элементы управления. Эти классы дублируют функции базовых HTML — элементов, но обладают более согласованным и значащим набором свойств и ме тодов, которые упрощают их объявление и доступ к ним. В качестве примеров можно назвать элементы управления Hyper. Link, List. Box и Button. • Многофункциональные элементы управления. Эти усовершенствованные эле менты управления могут генерировать большой объем HTML -разметки и даже клиентский Java. Script -код для создания интерфейса. В качестве примеров мож но назвать элементы управления Calendar, Ad. Rotator и Tree. View. В Visual Studio многие многофункциональные элементы управления доступны на вкладке Standard (Стандартные) в окне Toolbox. • Элементы управления проверкой достоверности. Этот набор элементов управ ления позволяет быстро проверять достоверность связанного элемента управле ния ввода на предмет соблюдения нескольких стандартных или пользовательских правил.

Специализированные группы элементов управления • Элементы управления данными.  Эти элементы управления включают сложные сетки иСпециализированные группы элементов управления • Элементы управления данными. Эти элементы управления включают сложные сетки и списки, предназначенные для отображения больших объемов данных, с поддержкой дополнительных свойств вроде создания шаблонов, редактирова ния, сортировки и разбиения на страницы. Этот набор также содержит элементы управления источником данных, позволяющие привязываться к различным ис точникам данных декларативно, без написания дополнительного кода. • Элементы управления навигацией. Эти элементы управления предназначены для отображения карт сайта и позволяют пользователю перемещаться с одной страницы на другую. • Элементы управления входом в систему. Эти элементы управления поддержива ют аутентификацию с помощью форм, модель ASP. NET для аутентификации поль зователей по базе данных и отслеживания их состояния. • Элементы управления Web Parts. Этот набор элементов управления поддерживает Web Parts — модель ASP. NET для построения компонентных, легко конфигурируе мых веб-порталов. • Элементы управления ASP. NET AJAX. Эти элементы управления позволяют использовать в веб-страницах приемы Ajax без написания клиентского кода. • Элементы управления ASP. NET Dynamic Data. Эти элементы управления поддер живают компонент ASP. NET Dynamic Data , который позволяет создавать управ ляемые данными веб-сайты за счет построения гибких шаблонов, а не написания утомительного кода.

Иерархия серверных элементов управления. P a g e U s e r C o n tИерархия серверных элементов управления. P a g e U s e r C o n t r o l T e m p l a t e C o n t r o l. L i t e r a l C o n t r o l D a t a B o u n d L i t e r a l C o n t r o l S y s t e m. W e b. U I. W e b C o n t r o l s S y s t e m. W e b. U I. H t m l C o n t r o l s C o n t r o l S y s t e m. O b j e c t System. Web. UI

Свойства класса Control Свойство Описание Client. ID Уникальный идентификатор клиента, создаваемый ASP. NET при создании экземпляраСвойства класса Control Свойство Описание Client. ID Уникальный идентификатор клиента, создаваемый ASP. NET при создании экземпляра страницы Controls Коллекция дочерних элементов управления Enable. View. State Значение определяет, должен ли элемент управление поддерживать своё состояние. По умолчанию – true ID Идентификатор элемента управления – имя элемента для доступа из сценариев или скрытого кода Page Ссылка на объект страницы, содержащей элемент управления Parent Ссылка на родительский элемент управления Visible Значение определяет необходимость генерации элемента управления. Для невидимого элемента не будет сгенерирован HTML — код

Методы класса Control Метод Описание Data. Bind() Связывает элемент управления и все его дочерние элементы сМетоды класса Control Метод Описание Data. Bind() Связывает элемент управления и все его дочерние элементы с источником данных или выражением. Find. Control() Ищет дочерний элемент управления с определённым именем. Если такой элемент найден, возвращается ссылка на общий тип Control Has. Controls() Возвращает значение, определяющее наличие у элемента управления дочерних элементов управления Render() Записывает HTML – код элемента управления на основании текущего состояния. Метод вызывается ASP. NET автоматически

Серверные элементы управления HTML слайд 1/2 74 Объявление дескриптора Класс . NET Специфичные члены а runat=serverСерверные элементы управления HTML слайд 1/2 74 Объявление дескриптора Класс . NET Специфичные члены Html. Anchor HRef, Target, Title, Name, событие Server. Click

Серверные элементы управления HTML слайд 2 /2 input type = radio runat=server Html. Input. Radio. ButtonСерверные элементы управления HTML слайд 2 /2 Html. Input. Radio. Button Checked, Type, Value, событие Server. Change Html. Input. Text Max. Length, Type, Value, событие Server. Change Html. Input. Password Max. Length, Type, Value, событие Server. Change Html. Select Multiple, Selectedlndex, Size, Value, Data. Source, Data. Text. Field, Data. Value. Field, Items (коллекция), событие Server. Change

, Html. Table. Row Align, Bg. Color, Border. Color, Height, VAlign, Cells ( коллекция ) Auto. Post. Back, Columns, Max. Length, Readonly, Rows, Text. Mode, Wrap, событие Text. Changed

Обработка событий веб-элементов управления слайд 1/2 • События веб-элементов управления работают так же, как и серверныеОбработка событий веб-элементов управления слайд 1/2 • События веб-элементов управления работают так же, как и серверные события серверных элементов управления HTML. Событие Server. Click заменяется событием Click, а общие события Server. Change — специфическими событиями Checked. Changed (для Radio. Button и Check. Button) и Text. Changed (для Text. Box), но их поведение оста ется таким же. • Основное различие состоит в том, что веб-элементы управления поддерживают свойство Auto. Post. Back, использующее Java. Script для захвата клиентского события и запуска обратной отправки. ASP. NET получает от правленную страницу и немедленно запускает соответствующее серверное событие. • Для демонстрации событий создадим простое приложение от слеживания событий. Это приложение добавляет новую запись в списковый элемент управления каждый раз, когда происходит отслеживаемое им событие. Это по зволяет просмотреть порядок генерации событий и эффект от использования автомати ческой обратной отправки.

Обработка событий веб-элементов управления слайд 2/2 form id=form 1 runat=server div h 3List of events: /hОбработка событий веб-элементов управления слайд 2/2

List of events:
Controls being monitored for change events:

protected void Ctrl. Changed(Object sender, Event. Args e) { string ctrl. Name = ((Control)sender). ID; lst. Events. Items. Add(ctrl. Name + » Changed»); // Select the last item to scroll the list so the most recent // entries are visible. lst. Events. Selected. Index = lst. Events. Items. Count — 1; }

Элемент Image. Button и событие Click • В рассмотренном примере для передачи пустого объекта System. Event.Элемент Image. Button и событие Click • В рассмотренном примере для передачи пустого объекта System. Event. Args всегда использовался второй параметр события. Этот объект не содержит какой-то до полнительной информации и является просто заполнителем. • Одним из элементов управления, отправляющих дополнительную информацию, яв ляется Image. Button. Он отправляет специальный объект Imagedick. Event. Args (из пространства имен System. Web. UI), который предоставляет свойства X и Y. Эти свой ства определяют место изображения, на котором был выполнен щелчок. С использова нием этой дополнительной информации можно создать серверную карту изображения. Например, ниже приведен код, отображающий координаты места, на котором был со вершен щелчок, и проверяющий, была ли это предопределенная область изображения. protected void Image. Button 1_Click(object sender, Image. Click. Event. Args e) { lbl. Result. Text = «You clicked at (» + e. X. To. String() + «, » + e. Y. To. String() + «). «; if ((e. Y 20) && (e. X < 275)) { lbl. Result. Text += "You clicked on the button surface. "; } else { lbl. Result. Text += "You clicked the button border. "; } }

Списковые элементы управления Элемент управления Описание asp: Drop. Down. List  Раскрывающийся список,  заполненный коллекциейСписковые элементы управления Элемент управления Описание Раскрывающийся список, заполненный коллекцией объектов . В HTML трансформируется в дескриптор c атрибутом size=»l» Окно списка, заполненное коллекцией объектов . В HTML трансформируется в дескриптор с атрибутом size=»x», где х — количество видимых элементов Элементы этого списка трансформируются во флажки, выровнен ные в таблице с одним или несколькими столбцами То же, что и , но элементы трансформи руются в переключатели Статический маркированный или нумерованный список. В HTML он трансформируется в набор дескрипторов

    или
      . Этот элемент управления можно также использовать для создания спи ска гиперссылок

Свойства списковых элементов управления Свойство Описание Auto. Post. Back Если равно true,  форма автоматически отправляетсяСвойства списковых элементов управления Свойство Описание Auto. Post. Back Если равно true, форма автоматически отправляется обратно, когда пользователь изменяет текущий выбор Items Возвращает коллекцию элементов List. Item (элементы также можно добавлять декларативно с помощью дескриптора ) Selected I ndex Возвращает или устанавливает индекс выбранного элемента. В случае списков с возможностью выбора нескольких элементов вместо этого свойства следует просматривать в цикле коллекцию Items и проверять свойство Selected каждого хранящегося в ней элемента List. Item Selected I tem Возвращает ссылку на первый выбранный List. Item. В случае спи сков с возможностью выбора нескольких элементов вместо этого свой ства следует просматривать в цикле коллекцию Items и проверять свойство Selected каждого хранящегося в ней элемента List. Item. Data. Source Это свойство можно установить в объект, содержащий информацию, которую необходимо отобразить (например, Data. Set, Data. Table или коллекция). При вызове Data. Bind() список будет заполнен на основе этого объекта. Data. Member Используется в сочетании с привязкой данных, когда источник данных содержит несколько таблиц (например, когда источником является Data. Set). Data. Member идентифицирует таблицу, с которой будет проводиться работа Data. Text. Field Используется в сочетании с привязкой данных, чтобы указать на то, какое свойство или поле источника данных должно применяться для текста каждого элемента списка Data. Value. Field Используется в сочетании с привязкой данных, чтобы указать на то, какое свойство или поле источника данных должно применяться для атрибута Value каждого элемента списка (который не отображается, но может быть прочитан программно для ссылки на него в будущем) Data. Text. Format. String Устанавливает строку форматирования, используемую для преоб разования текста элемента списка (в соответствии со свойством Data. Text. Field)

Списковые элементы с возможностью выбора • К числу списковых элементов управления с возможностью выбора относятся Drop.Списковые элементы с возможностью выбора • К числу списковых элементов управления с возможностью выбора относятся Drop. Down. List , List. Box , Check. Box. List и Radio. Button. List , т. е. все списковые эле менты управления кроме Bulleted. List. Они позволяют пользователям выбирать один или более содержащихся в них элементов. Проверить, какие элементы были выбраны, можно при обратной отправке страницы. • По умолчанию Radio. Button. List и Check. Box. List визуализируются в множество переключателей и флажков, соответственно. Но оба этих класса предоставляют еще и несколько дополнительных свойств, которые позволяют управлять компоновкой таких повторяющихся элементов. 86 Свойство Описание Repeat. Layout Это перечисление указывает, как должны визуализироваться флажки или переключатели — в виде таблицы (Table), внутристрочно (Flow), в эле менте

    (Unordered. List) или в элементе
      (Ordered. List) Repeat. Direction Указывает, как должен визуализироваться список элементов управле ния — горизонтально или вертикально Repeat. Column Устанавливает количество столбцов в случае, если для свойства Repeat. Layout указано значение Table Cell. Padding, Cellspacing, Text. Align Если свойство Repeat. Layout установлено в Table, эти свойства кон фигурируют интервалы и выравнивание ячеек таблицы

Элемент управления Bulleted. List • Элемент управления Bulleted. List является серверным эквивалентом элемента  ul Элемент управления Bulleted. List • Элемент управления Bulleted. List является серверным эквивалентом элемента

    (неупорядоченный список) или
      (упорядоченный список). Как и для всех спи сковых элементов управления, для него с помощью свойства Items должна устанавли ваться коллекция отображаемых элементов. 87 Свойство Описание Bullet. Style Определяет тип списка. Допустимыми значениями являются Numbered (1, 2, 3. . . ), Lower. Alpha ( a , t >, с. . . ) и Upper. Alpha (А, В, С. . . ), Lower. Roman ( i , iii. . . ) и Upper. Roman ( I , III. . . ), а также символы мар керов Disc , Circle , Square и Customlmage (в этом случае потребу ется установить свойство Bullet. Image. Url ) Bullet. Image. Url Если Bullet. Style установлено в Customlmage, это свойство указы вает на изображение, расположенное слева от каждого элемента и трак туемое как маркер First. Bullet. Number В упорядоченном списке (с использованием стилей Numbered, Lower. Alpha, Upper. Alpha, Lower. Roman или Upper. Roman) этим свойством устанавливается первое значение. Например, при установ ке First. Bullet. Number в 3 список может выглядеть как 3, 4, 5 (для Numbered) или С, D, Е (для Upper. Alpha) Display. Mode Определяет, как должен визуализироваться текст каждого элемента: как текст (значение Text , принятое по умолчанию) или как гиперссылка (значение Link. Button или Hyper. Link ). Разница между Link. Button и Hyper. Link состоит в способе интерпретации щелчков. Когда исполь зуется значение Link. Button, элемент управления Bulleted. List генерирует событие Click, на которое можно реагировать на сервере для выполнения навигации. Когда применяется значение Hyper. Link, события Click элемент управления Bulletted. List не генерирует: вместо этого он трактует текст каждого элемента в списке как относи тельный или абсолютный URL -адрес, и визуализирует все элементы в виде обычных гиперссылок. Когда пользователь щелкает на каком-то из этих элементов, браузер пытается перейти по этому URL -адресу

Элементы проверки достоверности • Одним из наиболее распространенных применений веб-страниц является сбор данных. Часто веб-страница запрашиЭлементы проверки достоверности • Одним из наиболее распространенных применений веб-страниц является сбор данных. Часто веб-страница запраши вает у пользователя какую-то информацию, а затем сохраняет ее во вспомогательной базе данных. Почти в каждом случае следует проверить достоверность этих данных, чтобы не сохранить бесполезную, неинформативную либо противоречивую информа цию, которая позже может вызвать проблемы. • В идеальном случае проверка достоверности пользовательского ввода должна выполняться на стороне клиента, чтобы пользователь был немедленно информирован о проблемах с вводом перед отправкой формы серверу. Корректная реализация такой модели сохраня ет серверные ресурсы и ускоряет обратную связь с пользователем. Однако независимо от того, выполняется ли клиентская проверка достоверности, следует также проверять достоверность данных формы и на стороне сервера. В противном случае страница мо жет быть подвержена атаке за счет удаления клиентского Java. Script -кода, проверяю щего достоверность ввода, замены ее новой страницей и применения ее для отправки фальшивых данных. • Написание кода проверки достоверности — сложная задача. Поэтому в дополнение к набору элементов управления HTML и веб-элементов управле ния были также разработаны набор элементов управления проверкой достоверности. Эти элементы управления можно объявить в веб-форме, а затем привязать к любому другому элементу управления вводом. После привязки к элементу управления вводом элемент управления проверкой достоверности выполняет автоматическую клиентскую и серверную проверку достоверности. Если соответствующий элемент управления пуст, содержит данные недопустимого типа либо не придерживается определенных пра вил, элемент управления проверкой достоверности препятствует обратной отправке страницы.

Элементы управления 89 Элемент управления Описание asp: Required. Field. Validator Контролирует,  не пуст ли проверяемыйЭлементы управления 89 Элемент управления Описание Контролирует, не пуст ли проверяемый элемент управления при отправке формы Контролирует, находится ли значение связанного элемента управления в пределах определенного диапазона. Значение и диапазон могут быть чис лом, датой или строкой Контролирует, соответствует ли значение данно го элемента управления определенной операции сравнения (больше, меньше и т. д. ) с другой кон стантой или значением элемента управления Контролирует, соответствует ли значение данно го элемента управления определенному регуляр ному выражению Позволяет определить любую клиентскую или серверную операцию проверки достоверности Java. Script для выполнения собственной логики проверки достоверности Отображает итоговую информацию с сообщения ми об ошибках для каждого давшего сбой эле мента управления проверкой достоверности на странице (или во всплывающем окне сообщения)

Процесс проверки достоверности Элементы управления проверкой достоверности могут применяться для проверки страницы как автоматически на этапеПроцесс проверки достоверности Элементы управления проверкой достоверности могут применяться для проверки страницы как автоматически на этапе ее отправки пользователем, так и вручную в са мом коде. Более распространен первый подход. Когда используется автоматический процесс проверки, пользователь получает обыч ную страницу и приступает к заполнению отображаемых на ней элементов управления вводом. По завершении он щелкает на какой-нибудь кнопке, чтобы отправить страни цу. У каждой кнопки имеется свойство Causes. Validation, которое может быть уста новлено либо в true, либо в false. То, что произойдет после выполнения пользователем щелчка на кнопке, зависит от значения этого свойства. • Если значение свойства Causes. Validation равно false , ASP. NET проигнориру ет элементы управления проверкой достоверности, страница будет отправлена, и код обработки событий будет выполнен обычным образом. • Если значение свойства Causes. Validation равно true (по умолчанию), ASP. NET автоматически проверит страницу после щелчка пользователем на кнопке, вы полнив проверку для каждого элемента управления на странице. В случае если какой-то из элементов управления не пройдет проверку, ASP. NET вернет страницу с сообщением об ошибке (в зависимости от выбранных настроек). Код обработ ки событий Click может будет, а может и не будет выполнен, т. е. то, является ли страница действительной, необходимо выяснять специально в обработчике событий. Из этого описания становится понятно, что проверка достоверности выполняется автоматически только при щелчке на кнопках определенных видов. Она не происходит ни в случае отправки страницы из-за какого-нибудь события изменения (вроде выбора нового значения в списке Auto. Post. Back ), ни при выполнении пользователем щелчка на кнопке, свойство Causes. Validation которой установлено в false. Однако это не исключает возможности выполнения проверки одного или более элементов управления вручную и принятия решения на основе результатов в коде.

Класс Base. Validator слайд 1/3 • Классы элементов управления проверкой достоверности находятся в пространст ве именКласс Base. Validator слайд 1/3 • Классы элементов управления проверкой достоверности находятся в пространст ве имен System. Web. Ul. Web. Controls и наследуются от класса Base. Validator. Этот класс определяет базовые функции элемента управления проверкой достоверности. 91 Свойство или метод Описание Control. To. Validate Указывает на элемент управления вводом, подлежащий проверке Display Определяет способ отображения сообщения об ошибке. Если установлено в static, заранее подсчитывается пространство, необходимое для отображения сообщения, и добавляется к компо новке. Если установлено в Dynamic, компоновка страницы будет динамически изменяться для отображения строки ошибок. Следует отметить, что несмотря на кажущуюся пользу способа Dynamic, если компоновка основана на табличных структурах, при динамиче ском добавлении множества строк будет внесено довольно много изменений, которые могут запутать пользователя Enable. Client. Script Булевское свойство, определяющее, будет ли выполняться провер ка достоверности на стороне клиента. По умолчанию установлено в true

Класс Base. Validator слайд 2/3 Enabled Булевское свойство,  позволяющее пользователю включать или отключать элемент управленияКласс Base. Validator слайд 2/3 Enabled Булевское свойство, позволяющее пользователю включать или отключать элемент управления проверкой достоверности. В отклю ченном состоянии элемент управления проверкой достоверности, естественно, никакой проверки не выполняет. Это свойство может устанавливаться программно при необходимости создать страницу, динамическим образом принимающую решение о том, что должно проверяться, а что — нет Error. Message Строка ошибки, которая будет отображаться в итоговой информа ции об ошибках элементом управления Validation. Smmary, если таковой присутствует Text Текст ошибки, который отображается в элементе управления про веркой достоверности, если связанный элемент управления вво дом дает сбой при проверке Is. Valid Это свойство также обычно читается или устанавливается только из кода сценария (или класса отделенного кода) для определения достоверности значения в заданном элементе управления вводом. Это свойство можно проверить на сервере после обратной отправ ки, но если проверка достоверности на стороне клиента активна и поддерживается клиентским браузером, выполнение не перейдет на сервер в случае недостоверного значения.

Класс Base. Validator слайд 3/3 Set. Focus. On. Error Если равно true,  то когда пользовательКласс Base. Validator слайд 3/3 Set. Focus. On. Error Если равно true, то когда пользователь пытается отправить страницу с недостоверным элементом управления вводом, брау зер передает фокус на этот элемент для быстрого исправления значения. (В случае false фокус сохраняет кнопка или элемент управления, на котором был выполнен щелчок для отправки страницы. ) Это свойство работает для проверки достоверности как на стороне клиента, так и на стороне сервера. При наличии нескольких элементов управления проверкой достоверности с Set. Focus. On. Error, установленным в true, и все элементы управления вводом недостоверны, фокус получит первый элемент управления в последовательности Validation. Group Позволяет объединять несколько элементов управления проверкой достоверности в одну логическую группу для того, чтобы они могли осуществлять свою проверку отдельно, без вмешательства элемен тов управления из других групп. Это свойство удобно использо вать, когда на веб-странице присутствует несколько отдельных па нелей, в каждой из которых имеется собственная кнопка отправки Validate () Этот метод выполняет повторную проверку элемента управле ния и соответствующим образом обновляет свойство Is. Valid. Веб-страница вызывает этот метод автоматически тогда, ко гда страница отправляется обратно элементом управления Causes. Validation. Однако он также может вызываться и в коде.

Required. Field. Validator • Самым простым доступным элементом управления является Required. Field. Validator,  работа которогоRequired. Field. Validator • Самым простым доступным элементом управления является Required. Field. Validator, работа которого заключается в проверке того, не является ли данный элемент управ ления пустым. Например, элемент управления не пройдет проверку, если связанное текстовое поле не имеет содержимого или содержит только пробелы. В качестве аль тернативы вместо проверки пустых значений можно указать значение по умолчанию с использованием свойства Initial. Value. В этом случае проверка проходит неудачно, если содержимое элемента управление совпадает с Initial. Value (указывая на то, что пользователь не внес никаких изменений). • Ниже приведен пример типичного элемента Required. Field. Validator: *

Range. Validator слайд 1/2 • Элемент управления Compare. Validator сравнивает содержащееся в элементе управления значение либоRange. Validator слайд 1/2 • Элемент управления Compare. Validator сравнивает содержащееся в элементе управления значение либо с каким-то фиксированным значением, либо со значением, содержащимся в другом элементе управления. Это позволяет, например, проверить, что в двух текстовых полях содержатся одинаковые данные, или что значение в одном текстовом поле не превышает максимального значе ния, указанного в другом поле. • Подобно элементу управления Range. Validator, элемент управления Compare. Validator предоставляет свойство Туре, в котором указывается тип сравниваемых данных. Помимо этого, он еще также предоставляет свойства Value. To. Compare и Control. To. Compare, которые позволяют сравнивать значение элемента управления вводом с константным значением или значением другого элемента управления вводом. Использовать можно только одно из этих двух свойств. • Свойство Operator позволяет задать тип операции сравнения, которая должна выполняться. Доступными значениями являются Equal, Not. Equal, Greater. Than. Equal, Less. Than, Less. Than. Equal и Data. Type. Check. Значение Data. Type. Check заставляет элемент управления Compare. Validator проверять, что вве денные данные соответствуют требуемому типу (указанному с помощью свойства Туре), и больше не выполнять никаких дополнительных операций сравнения.

Range. Validator слайд 2/2 • Прмер1: введенное значение сравнивается с постоянным значением для проверки того, чтоRange. Validator слайд 2/2 • Прмер1: введенное значение сравнивается с постоянным значением для проверки того, что указанный возраст больше или равен 18 годам: * • Пример 2: сравниваются значения, введенные в двух текстовых полях пароля, для проверки, совпадают ли они: Fields don't match.

Regular. Expression. Validator • Элемент управления Regular. Expression. Validator является одним из самых мощ ных средствRegular. Expression. Validator • Элемент управления Regular. Expression. Validator является одним из самых мощ ных средств в наборе инструментов разработчика приложений ASP. NET. Он позволяет проверять текст путем сопоставления с образцом, определенным в регулярном, выра жении. От разработчика требуется всего лишь установить это регулярное выражение в свойстве Validation. Expression. • Следующий элемент управления проверяет, является ли введенное в тексто вом поле значение действительным электронным адресом: * • Выражение. *@. {2, }\. . {2, } указывает, что проверяемая им строка должна начинаться с определенного количества символов (. *) и содержать символ а также еще минимум два символа (для имени домена), точку (защищенную как \. ) и, наконец, по крайней мере, еще два символа для расширения домена. Например, marco @ apress. com — это допус тимый адрес электронной почты, в то время как marco@apress или marco. apress. com проверку достоверности не пройдут. Предлагаемое выражение на самом деле является довольно простым. С помощью более сложного регулярного выражения можно прове рить допустимость имени домена, существование того или иного расширения (см. спи сок разрешенных имен доменов по адресу http : // www. icann. org ) и т. п.

Custom. Validator слайд 1/2 • Элемент управления Custom. Validator позволяет выполнять специальные процедуры проверки как наCustom. Validator слайд 1/2 • Элемент управления Custom. Validator позволяет выполнять специальные процедуры проверки как на стороне клиента, так и на стороне сервера. Эти процедуры могут привя зываться к нему, чтобы проверка достоверности выполнялась автоматически. Если вы полнение проверки не проходит, для свойства Page. Is. Valid устанавливается значение false , как и случае любого другого элемента управления проверкой достоверности. • Процедуры проверки достоверности, которые Custom. Validator должен выполнять на стороне клиента и на стороне сервера, объявляются похожим образом. Те и другие принимают два параметра: ссылку на элемент управления проверкой достоверности, к которому они должны относиться, и специальный целевой объект. Этот объект предос тавляет свойство Value, в котором содержится текущее значение связанного элемен та управления вводом (значение, подлежащее проверке), и свойство Is. Valid, которое позволяет определять, является ли введенное значение допустимым. Например, чтобы проверить, является ли число кратным пяти, можно использовать следующую клиент скую Java. Script- процедуру проверки : function Emp. IDClient. Validate(ctl, args) { args. Is. Valid=(args. Value%5 == 0); } • Связать этот код с элементом управления так, чтобы процедура проверки на стороне клиента выполнялась автоматически, можно, указав для Client. Validation. Function в качестве значения имя функции (в данном случае — Emp. IDClient. Validate ).

Custom. Validator слайд 2/2 • Далее при отправке страницы ASP. NET необходимо инициировать событие Custom. Validator.Custom. Validator слайд 2/2 • Далее при отправке страницы ASP. NET необходимо инициировать событие Custom. Validator. Server. Validate. Это событие нужно обработать с помощью кода на С# так, чтобы оно решало ту же задачу. И хотя Java. Script -логика является необязатель ной, процедура проверки достоверности на стороне сервера должна быть обязательно добавлена, чтобы проверка выполнялась даже в случае использования клиентом уста ревшего браузера (или изменения HTML -кода веб-страницы). • Ниже показан обработчик событий для события Server. Validate. Он выполняет С#- эквивалент приведенной ранее клиентской процедуры проверки. protected void Validate. Emp. ID 2_Server. Validate(object source, Server. Validate. Event. Args args) { try { args. Is. Valid = (int. Parse(args. Value) % 5 == 0); } catch { args. Is. Valid = false; } } • Пример использующего эти процедуры дескриптора Custom. Validator: *

Validation. Smmary • Элемент управления Validation. Summary никакой проверки не выполняет.  Вместо этого он позволяетValidation. Smmary • Элемент управления Validation. Summary никакой проверки не выполняет. Вместо этого он позволяет показывать сводную информацию обо всех возникших на странице ошибках. В этой сводной информации отображается значение Error. Message каждого элемента управления проверкой достоверности, которому не удалось успешно пройти проверку. Сводная информация может отображаться как в клиентском окне сообщений Java. Script (в случае установки свойства Show. Message. Box в true), так и на самой стра нице (при установке свойства Show. Summary в true). Значение true может устанавли ваться одновременно для обоих этих свойств, чтобы отобразить итоговую информацию двумя способами, поскольку эти свойства не являются взаимно исключающими. В слу чае отображения итоговой информации на странице, с помощью свойства Display. Mode можно выбрать для нее определенный стиль (например, Single Paragraph, List или Bullet. List). И, наконец, свойство Header. Text позволяет указывать для итоговой ин формации конкретный заголовок. • Объявление элемента управления Validation. Summary выглядит довольно просто:

Группы проверки достоверности слайд 1/2 • На более сложных страницах может присутствовать по нескольку отдельных группГруппы проверки достоверности слайд 1/2 • На более сложных страницах может присутствовать по нескольку отдельных групп элементов управления, возможно даже в разных панелях. В таких ситуациях может по надобиться выполнять проверку достоверности для каждой группы элементов отдельно. Например, пусть имеется форма, которая содержит область с элементами управления входом в систему и область с элементами управления для регистрации нового пользо вателя. Каждая область содержит отдельную кнопку Submit , и проверка достоверности должна выполняться в области, на кнопке Submit которой был совершен щелчок. • В ASP. NET такой сценарий можно реализовать с помощью так называемых групп проверки достоверности. Для создания группы проверки достоверности необходимо по местить все нужные элементы управления вводом и кнопку Causes. Validation в одну и ту же логическую группу. Это делается путем установки свойства Validation. Group каждого из этих элементов в одинаковую описательную строку (например, «Login» или «New. User»). Каждый кнопочный элемент управления, который имеет свойст во Causes. Validation, поддерживает также и свойство Validation. Group. Элементы управления проверкой достоверности получают это свойство благодаря наследованию от класса Base. Validator.

Группы проверки достоверности слайд 2/2 • Например, в следующей странице определяются две группы проверки достоверности сГруппы проверки достоверности слайд 2/2 • Например, в следующей странице определяются две группы проверки достоверности с именами Groupl и Group 2.

     

Многофункциональные элементы управления • Многофункциональные элементы управления — это веб-элементы управления, мо делирующие сложные структуры пользовательскогоМногофункциональные элементы управления • Многофункциональные элементы управления — это веб-элементы управления, мо делирующие сложные структуры пользовательского интерфейса. Несмотря на то, что не существует точного определения многофункциональных элементов управления, этот термин обычно описывает веб-элементы управления, предлагающие объектную модель, которая четко отделена от базового представления HTML. Стандартный многофункцио нальный элемент управления может программироваться как отдельный объект (и опре деляться отдельным дескриптором), однако он трансформируется в сложную последова тельность HTML -элементов и даже может использовать клиентский Java. Script -код. • Чтобы понять различие, рассмотрим элементы управления Table и Calendar. При программировании с элементом управления Table разработчик использует объекты, представ ляющие собой оболочки для табличных HTML -элементов, таких как

Html. Table Align, Bg. Color, Border. Color, Cell. Padding, Cellspacing, Height, Width, Rows ( коллекция ) Html. Table. Cell Align, Bg. Color, Border. Color, Col. Span, Height, No. Wrap, Row. Span, VAlign, Width
,
и
. Элемент управления Table не считается многофункциональным. С другой сто роны, при программировании с помощью Calendar разработчик работает в терминах дней, месяцев и диапазонов выбора — т. е. с концепциями, не имеющими прямого отноше ния к HTML -разметке, которую дает в результате элемент Calendar. По этой причине Calendar относится к многофункциональным элементам управления.

Многофункциональные элементы управления В состав ASP.  NET входит множество многофункциональных элементов управления, в том числеМногофункциональные элементы управления В состав ASP. NET входит множество многофункциональных элементов управления, в том числе основанные на данных списковые элементы управления, элементы управления навигацией, элемен ты управления безопасностью и элементы управления, предназначенные для веб-порталов. Ниже приведен список многофункциональных элементов управления, которые не относятся ни к одной специальной категории и потому находятся разделе Standard (Стандартные) панели Toolbox в Visual Studio. • Ad. Rotator. Этот элемент управления позволяет создавать баннер, в котором согласно расписанию (задаваемому заранее и сохраняемому в XML — файле) отображается одно из набора изображений. • Calendar. Этот элемент управления позволяет создавать календарь, отображаю щий месяцы и дни и позволяющий перемещаться по ним и выбирать дату или диапазон дат. • Multi. View, View и Wizard. Эти элементы управления представляют собой усовер шенствованные панели и позволяют переключаться на странице с одной группы элементов на другую. Элемент управления Wizard даже содержит встроенную ло гику навигации. • Substitution. Этот элемент управления в действительности является заполни телем, позволяющим настраивать входящий в состав ASP. NET механизм кэширо вания вывода. • Xml. Этот элемент управления принимает в качестве входных данных файл XML и файл таблицы стилей XSLT и отображает в окне браузера результирующую HTML — разметку.

Элемент управления Ad. Rotator • Элемент управления Ad. Rotator случайным образом выбирает графические баннеры из списка,Элемент управления Ad. Rotator • Элемент управления Ad. Rotator случайным образом выбирает графические баннеры из списка, который указан во внешнем XML -файле расписания. • Очевидно, что перед созданием этого элемента управления понадобится определить XML -файл расписания. Ниже приведен пример : hdr_logo. gif http: //www. apress. com Алла Пугачева вышла замуж за внука Максима Галкина 20 books sub_hero. jpg http: //www. microsoft. com/events/teched 2007/default. mspx Крысы-мутанты работают машинистами метрополитена 20 Java

Свойства элемента Ad Элемент Описание Image. Url Изображение,  которое будет отображаться.  Здесь может бытьСвойства элемента Элемент Описание Image. Url Изображение, которое будет отображаться. Здесь может быть указана как относительная ссылка (файл в текущем каталоге), так и полностью уточ ненный URL -адрес в Интернете Navigate. Url Ссылка, по которой будет направляться пользователь в случае щелчка на баннере Alternate. Text Текст, который будет показываться вместо рисунка, если отобразить его невозможно. В некоторых новых браузерах этот текст также будет исполь зоваться в качестве всплывающей подсказки Impressions Число, которое определяет, насколько часто будет отображаться данное рекламное объявление. Это число берется в соотношении с теми, что были указаны для других рекламных объявлений. Например, баннер со значени ем 10 будет отображаться в два раза чаще, чем баннер со значением 5 Keyword Ключевое слово, идентифицирующее группу рекламных объявлений. Может применяться для фильтрации.

Ad. Rotator asp: Ad. Rotator id=Ad. Rotator 1 runat=server Target=_blank Advertisement. File=ads. xml On. Ad. Created=Ad.Ad. Rotator protected void Ad. Rotator 1_Ad. Created(object sender, Ad. Created. Event. Args e) { lnk. Banner. Navigate. Url = e. Navigate. Url; lnk. Banner. Text = «Click here for information about our sponsor: «; lnk. Banner. Text += e. Alternate. Text; }

Элемент управления Calendar с. 1/2 Этот элемент управления создает многофункциональное и привлекательное окно ка лендаря, Элемент управления Calendar с. 1/2 Этот элемент управления создает многофункциональное и привлекательное окно ка лендаря, которое показывает по одному месяцу за раз. Пользователь может переходить от одного месяца к другому, выбирать определенную дату, и даже выбирать диапазон дней (если разрешен множественный выбор). Элемент управления Calendar имеет много свойств, которые все вместе позволяют изменять практически любую его часть. Например, можно настраивать цвета переднего плана и фона, шрифт, заголовок, фор мат даты, выбранную в текущий момент дату и т. д. Он также предоставляет несколько событий, которые позволяют реагировать на изменение пользователем текущего месяца (Visible. Month. Changed), выбор пользователем даты (Selection. Changed) и подготовку элементом управления Calendar к визуализации дня (Day. Render). В следующем дескрипторе Calendar устанавливается несколько базовых свойств: Наиболее важным событием Calendar является Selection. Changed, которое запус кается каждый раз, когда пользователь щелкает на какой-то дате. Ниже показан базо вый обработчик событий, отвечающий на событие Selection. Changed и отображающий выбранную дату: protected void Calendar 1_Selection. Changed(object sender, Event. Args e) { lbl. Dates. Text = «You selected these dates: «; foreach (Date. Time dt in Calendar 1. Selected. Dates) { lbl. Dates. Text += dt. To. Long. Date. String() + » «; } }

Элемент управления Calendar с.  2/2 asp: Calendar runat=server ID=Calendar 1  Fore. Color=#663399 Back. Color=#FFFFCCЭлемент управления Calendar с. 2/2

Организация навигации Навигация является фундаментальным компонентом любого веб-сайта. Хотя про цесс перехода пользователя от одной страницыОрганизация навигации Навигация является фундаментальным компонентом любого веб-сайта. Хотя про цесс перехода пользователя от одной страницы к другой достаточно прост, соз дание единообразной системы навигации, которая будет действовать для всего сайта, требует больших усилий. В то время как с помощью ряда ссылок (и ценой значитель ных усилий) можно построить собственную систему навигации, ASP. NET предоставляет встроенную систему навигации, которая упрощает решение этой задачи. Ключевые темы: • Элементы управления Multi. View и Wizard. Эти элементы управления позволяют объединить последовательность шагов в одну страницу. • Модель карты сайта. Эта модель позволяет определить структуру навигации по веб-сайту и связать ее непосредственно с многофункциональными элементами управления. • Многофункциональные элементы управления навигацией. К ним относятся эле менты управления Tree. View и Menu. С помощью этих элементов управления, модели карты сайта и мастер-страниц мож но построить завершенную систему навигации с минимальными усилиями. Наиболее важно то, что ASP. NET четко разделяет данные (информацию о структуре веб-сайта) и реализацию (элементы управления навигацией). Это означает, что можно реорганизо вывать, заменять или переименовывать веб-страницы, не нарушая структуры веб-сайта или не редактируя какую-либо часть его кода. Достаточно внести соответствующие изменения в файл карты сайта приложения.

Страницы со множеством представлений В большинстве веб-сайтов задачи распределяются между множеством страниц. Например,  чтобы наСтраницы со множеством представлений В большинстве веб-сайтов задачи распределяются между множеством страниц. Например, чтобы на сайте электронной коммерции добавить товар в товарную тележку и включить его в итоговый счет, потребуется перейти с одной страницы на другую. Этот подход наиболее очевиден, и его легко запрограммировать — при условии применения какого-нибудь способа управления состоянием, который обеспечивает передачу информации от страницы к странице. В других ситуациях может требоваться внедрение кода нескольких различных стра ниц внутрь одной страницы. Например, нужно предоставить пользователю возможность перемещения между несколькими представлениями одних и тех же данных (вроде таб лицы и диаграммы), не покидая страницу. Или же необходимо решить многошаговую задачу (такую как предоставление информации о пользователе для регистрации учетной записи), не заботясь о передаче соответствующей информации между веб-страницами. В хорошо спроектированном сайте пользователь заметит лишь одно отличие: при подходе с множеством представлений сохраняется один и тот же URL-адрес. Главным же отличием является модель написания кода. При использовании нескольких страниц обеспечивается более четкое разделение, но при этом определение способа взаимодействия между страницами (способа совместного использова ния или передачи информации) более трудоемко. В случае применения множества представ лений обеспечивается менее четкое разделение, однако написание кода для небольших нераз деляемых задач упрощается.

Элемент управления Multi. View является более простым из двух элементов управле ния с множеством представлений. Элемент управления Multi. View является более простым из двух элементов управле ния с множеством представлений. Фактически, элемент управления Multi. View предостав ляет способ объявления нескольких представлений с отображением только одного из них в каждый момент времени. Этот элемент не имеет пользовательского интерфейса по умолчанию — разработчик получает только HTML-разметку и элементы управления, которые добавил. Элемент управления Multi. View аналогичен подходу с при менением специальной панели.

Multi. View - разметка asp: Multi. View ID=Multi. View 1 runat=server Active. View. Index=0 On. Active.Multi. View — разметка Showing View #1 Showing View #2 Text content. Showing View #3 Представления можно добавлять и программно, создавая экземпляр объекта нового представления и добавляя его в элемент управления Multi. View с помощью методов Add() и Add. At() из коллекции Views.

Управление отображением представления Свойство Multi. View. Achive. View. Index определяет представление, которое будет отображаться. Это единственноеУправление отображением представления Свойство Multi. View. Achive. View. Index определяет представление, которое будет отображаться. Это единственное представление, визуализируемое на странице. Значением свойства Active. View. Index по умолчанию является -1, которое означает, что ни одного представления не отображается. Один из вариантов предполагает при менение спискового элемента управления, с помощью которого пользователь может вы бирать представление из полного списка представлений. Ниже приведен пример кода, который связывает список представлений с окном списка: protected void Page_Load(object sender, Event. Args e) { if (!Page. Is. Post. Back) { Drop. Down. List 1. Data. Source = Multi. View 1. Views; Drop. Down. List 1. Data. Text. Field = «ID»; Drop. Down. List 1. Data. Bind(); } } Код, который устанавливает текущее представление в соответствии с индексом спи ска, имеет следующий вид: protected void Drop. Down. List 1_Selected. Index. Changed(object sender, Event. Args e) { Multi. View 1. Active. View. Index = Drop. Down. List 1. Selected. Index; }

Команды Multi. View Имя команды Поле Multi. View Описание Prev. View Previous. View. Command. Name ПереходКоманды Multi. View Имя команды Поле Multi. View Описание Prev. View Previous. View. Command. Name Переход к предыдущему представлению Next. View. Command. Name Переход к следующему представлению Switch. View. Byl. DCommand. Name Переход к представлению с определенным идентифика тором (строковым именем). Идентификатор извлекается из свойства Command. Argument кнопочного элемента управления Switch. View. Bylndex. Command. Name Переход к представлению с оп ределенным числовым индексом. Индекс извлекается из свойства Command. Argument кнопочного элемента управления

Производительность страниц с Multi. View Самой важной особенностью элемента управления Multi. View является то, что он,Производительность страниц с Multi. View Самой важной особенностью элемента управления Multi. View является то, что он, в отли чие от многофункциональных элементов управления данными (Grid. View, Forms. View и т. д. ), не является контейнером именования. Это значит, что в случае добавления элемента управ ления text. Box 1 в одно представление нельзя будет добавить еще один элемент управления text. Box 1 в другое представление. С точки зрения модели страницы между элементами управ ления, которые добавлены в представление, и элементами управления в остальной части стра ницы не существует никакого реального различия. В результате страницы, создаваемые с помощью Multi. View, будут более громоздкими, чем обычные страницы. Это обусловлено тем, что вся модель элемента управления — включая эле менты управления каждого представления — создается при каждой обратной отправке и сохра няется в состоянии представления. В большинстве ситуаций это не имеет особого значения, если не предполагается программно манипулировать большим количеством элементов управления или не будут ис пользоваться несколько источников данных. Конечно, привязка данных необходима не во всех случаях применения элемента управления Multi. View. Прекрасным вариантом использования Multi. View является расширенный набор элементов управления вводом — например, форма онлайнового опроса, разделенная на отдель ные представления просто для того, чтобы избавить пользователя от необходимости слишком часто прибегать к прокрутке. Этот пример хорошо подходит для Multi. View, поскольку в самом конце, когда опрос будет завершен, можно будет прочитать все данные из элементов управления каждого представления.

Элемент управления Wizard • Элемент управления Wizard (мастер) представляет собой более эффектную версию элемента управления Multi.Элемент управления Wizard • Элемент управления Wizard (мастер) представляет собой более эффектную версию элемента управления Multi. View. Он тоже поддерживает отображение одновременно од ного из множества представлений, но предоставляет значительные и при этом настраи ваемые функциональные возможности, в том числе кнопки навигации, боковую панель со ссылками на выполняемые действия (шаги), стили и шаблоны. • Обычно мастера помогают решить какую-то одну задачу, и пользователь последова тельно выполняет предлагаемые мастером действия, переходя от текущего шага к сле дующему (или возвращаясь к предыдущему, если нужно внести какие-то изменения). Элемент управления Wizard в ASP. NET поддерживает также нелинейную навигацию — т. е. позволяет пропускать отдельные действия в зависимости от предоставленной поль зователем информации. • По умолчанию элемент управления Wizard предоставляет навигационные кнопки и боковую панель со ссылками на каждое отображаемое слева действие. Боковую панель можно скрыть, установив свойство Wizard. Display. Side. Bar в false. Содержимое для каждого шага можно предоставить с помощью любого элемента управления HTML или ASP. NET.

Свойства шагов в элементе Wizard Свойство Описание Title Описательное имя шага. Это имя используется для текстаСвойства шагов в элементе Wizard Свойство Описание Title Описательное имя шага. Это имя используется для текста ссылок в боковой панели Step. Type Тип шага, выражаемый в виде значения из перечисления Wizard. Step. Type. Это значение определяет тип навигационных кнопок, которые будут отображать ся для данного шага. Возможные варианты выбора: Start (отображает кнопку Next (Далее)), step (отображает кнопки Next (Далее) и Previous (Назад)), Finish (отображает кнопки Finish (Готово) и Previous (Назад)), Complete (не отображает никаких кнопок и скрывает боковую панель, если она используется) и Auto (тип шага определяется на основании позиции в коллекции). Значением по умолчанию является Auto, т. е. первым шагом будет Start, последним — Finish, а всеми остальными — Step Allow. Return Показывает, может ли пользователь возвращаться к этому шагу. Если это свой ство имеет значение false, то после того, как пользователь пройдет этот шаг, он не сможет вернуться назад. Ссылка боковой панели для этого шага будет недоступной, а кнопка Previous (Назад) следующего шага либо пропустит этот шаг, либо будет полностью скрыта (в зависимости от того, какое значение имеет свойство Allow. Return в предыдущих шагах)

Пример Wizard 119 Пример Wizard

События Wizard Событие Описание Active. Step. Changed Генерируется, когда элемент управления переключается на новый шаг (либоСобытия Wizard Событие Описание Active. Step. Changed Генерируется, когда элемент управления переключается на новый шаг (либо вследствие того, что пользователь щелкнул на кнопке нави гации, либо потому, что код изменил свойство Active. Step. Index) Cancel. Button. Click Генерируется при щелчке на кнопке Cancel (Отмена). По умолчанию кнопка Cancel не отображается, однако ее можно добавить к каж дому шагу, установив свойство Wizard. Display. Cancel. Button. Как правило, кнопка Cancel осуществляет выход из мастера. Если какой-либо код очистки отсутствует, достаточно просто установить свойство Cancel. Destination. Page. Url, и мастер автоматически позабо тится о переадресации Finish. Button. Click Генерируется при щелчке кнопки Finish (Готово) Next. Button. Click и Previous. Button. Click Эти события генерируются при щелчке на кнопке Next (Далее) или Previous (Назад) на любом шаге. Однако, поскольку перейти от одного шага к следующему можно несколькими способами, лучше выполнить обработку события Active. Step. Changed Side. Bar. Button. Click Генерируется при щелчке на кнопке в области боковой панели

Стили и шаблоны Wizard • Главным достоинством элемента управления Wizard яв ляется способ,  посредством которогоСтили и шаблоны Wizard • Главным достоинством элемента управления Wizard яв ляется способ, посредством которого он позволяет настраивать свой внешний вид. Это означает, что если требуется базовая модель (многошаговый процесс с кнопками нави гации и различными событиями), можно разработать собственный пользовательский интерфейс, отличный от применяемого по умолчанию. • В зависимости от того, насколько радикально требуется изменить внешний вид мас тера, доступны различные варианты. Если изменений немного, можно воспользовать ся различными высокоуровневыми свойствами, которые позволяют управлять цветами, шрифтами, интервалами и стилями границ, как это делается в любом элементе управ ления ASP. NET. Можно также настраивать внешний вид каждой кнопки. Можно также добавить верхний колонтитул с помощью свойства Header. Text. • Стили позволяют расширить возможности управления. С их помощью можно при менить параметры форматирования к различным частям элемента управления Wizard, аналогично использованию стилей для форматирования различных аспектов много функциональных элементов управления данными, подобных Grid. View.

Стили Wizard Стиль Описание Control. Style Применяется ко всем разделам элемента управления Wizard Header. Style ПрименяетсяСтили Wizard Стиль Описание Control. Style Применяется ко всем разделам элемента управления Wizard Header. Style Применяется к разделу верхнего колонтитула элемента управ ления Wizard, который будет отображаться только в том слу чае, если в свойстве Header. Text задан какой-либо текст Side. Bar. Style Применяется к области боковой панели элемента управления Wizard Side. Bar. Button. Style Применяется только к кнопкам на боковой панели Step. Style Применяется к разделу элемента управления, в котором опре деляется содержимое шага Navigation. Style Применяется к нижней области элемента управления, в кото рой отображаются кнопки навигации Navigation. Button. Style Применяетс только к кнопкам в области навигации Start. Next. Button. Style Применяется к кнопке навигации Next (Далее) на первом шаге (если свойство Step. Type имеет значение Start) Step. Next. Button. Style Применяется к кнопке навигации Next на промежуточных ша гах (если свойство Step. Type имеет значение Step) Step. Previous. Button. Style Применяется к кнопке навигации Previous (Назад) на промежу точных шагах (если свойство Step. Type имеет значение Step) Finish. Previous. Button. Style Применяется к кнопке навигации Previous в последнем шаге (если свойство Step. Type имеет значение Finish) Cancel. Button. Style Применяется к кнопке Cancel (Отмена), если свойство W izard. Display. Cancel. Button имеет значение true

Шаблоны Wizard Шаблон Описание Header. Template Определяет содержимое области верхнего колонтитула Side. Bar. Template Определяет боковуюШаблоны Wizard Шаблон Описание Header. Template Определяет содержимое области верхнего колонтитула Side. Bar. Template Определяет боковую панель, которая обычно включает ссылки навигации для каждого шага Start. Navigation. Template Определяет кнопки навигации для первого шага (если свойство Step. Type имеет значение Start) Step. Navigation. Template Определяет кнопки навигации для промежуточных шагов (если свойство Step. Type имеет значение Step) Finish. Navigation. Template Определяет кнопки навигации для последнего шага (если свойство Step. Type имеет значение Finish) Layout. Template Определяет общее расположение верхнего колонтитула, боковой панели, области шага и кнопок навигации

Шаблоны Wizard - пример Чтобы настроить кнопки навигации, можно добавить также приведенные ниже шаблоны. В этомШаблоны Wizard — пример Чтобы настроить кнопки навигации, можно добавить также приведенные ниже шаблоны. В этом примере сохраняются стандартные кнопки (явным их объявлением) и добавляется курсивный текст, показывающий, какой шаблон используется в данный момент. Start. Navigation. Template Step. Navigation. Template Finish. Navigation. Template

Шаблон Layout. Template позволяет указать ASP. NET по зиции других шаблонов относительно друга. Вставка каждого шаблонаШаблон Layout. Template позволяет указать ASP. NET по зиции других шаблонов относительно друга. Вставка каждого шаблона выполняется посредством элемента управления Place. Holder с соответствующим именем (header. Placeholder, side. Bar. Placeholder, wizard. Step. Placeholder и navigation. Placeholder). Например, если требуется просто разместить верхний колонтитул в верхней части элемента управления, под ним — бо ковую панель, еще ниже — раздел шага, а в самом низу — навигационные кнопки, и все это без какой-либо дополнительной разметки, шаблон Layout. Template должен быть сконфигурирован следующим образом: Для получения более сложной компоновки отдельные объекты Placeholder нужно было бы разместить в ячейках таблицы или в элементах

, позиционируемых с по мощью атрибутов CSS-стиля.

Карты сайта Если веб-сайт содержит довольно много страниц, возможно, потребуется какая-то системы навигации,  которая позволитКарты сайта Если веб-сайт содержит довольно много страниц, возможно, потребуется какая-то системы навигации, которая позволит пользователю переходить от одной страницы к другой. Очевидно, что для реализации практически любой системы навигации можно ис пользовать набор элементов управления ASP. NET, но всю трудную работу все же придет ся выполнять вручную. К счастью, ASP. NET предлагает новый набор функциональных средств навигации, которые существенно упрощают стоящую задачу. В лучших традициях средств ASP. NE T навигация в ASP. NET является гибкой, конфи гурируемой и подключаемой. Она состоит из трех компонентов: • Способ определения структуры навигации по веб-сайту. Этот компонент пред ставляет собой XML-карту сайта, которая по умолчанию хранится в файле. • Удобный способ синтаксического анализа файла карты сайта и преобразования его информации в подходящую объектную модель. Эти задачи выполняются эле ментом управления Site. Map. Data. Source и компонентом Xml. Site. Map. Provider. • Способ использования информации карты сайта для отображения текущей по зиции пользователя и предоставления ему возможности без труда переходить из одного места в другое. Эта часть реализуется с помощью элементов управления, связанных с элементом управления Site. Map. Data. Source; к ним относятся нави гационные цепочки («хлебные крошки»), списки, меню и деревья. Каждая из этих составляющих может настраиваться и расширяться независимо от других. Например, если требуется изменить внешний вид элементов управления нави гации, нужно просто связать различные элементы управления с элементом управления Site. Map. Data. Source. С другой стороны, если необходимо прочитать информацию карты сайта в другом формате или из другого места, понадобится изменить поставщика карты сайта.

Определение карты сайта слайд 1/2 Отправной точкой в системе навигации сайта, построенной на основе карты, явОпределение карты сайта слайд 1/2 Отправной точкой в системе навигации сайта, построенной на основе карты, яв ляется поставщик карты сайта. ASP. NET распространяется с единственным постав щиком карты сайта Xml. Site. Map. Provider, который может извлекать информацию о карте сайта из XML-файла. Поставщик Xml. Site. Map. Provider ищет файл Web. sitemap в корне виртуального ка талога. Подобно всем поставщикам карт сайта, его задача заключается в извлечении данных карты сайта и создании соответствующего объекта Site. Map. Затем этот объ ект Site. Map может быть сделан доступным другим элементам управления посредством Site. Map. Data. Source. Чтобы проверить его в действии, следует создать файл Web. sitemap и определить структу ру веб-сайта с помощью элементов и . Чтобы добавить карту сайта в Visual Studio, необходимо выбрать пункт меню Website->Add New Item (Веб-сайт -> Добавить новый элемент) (или Projects Add New Item (Проект -> Добавить новый элемент) в слу чае веб-проекта), указать шаблон Site Map (Карта сайта) и щелкнуть на кнопке Add (Добавить).

Определение карты сайта слайд 2/2 Базовая структура файла карты сайта, имеет следующий вид: site. Map xmlns=Определение карты сайта слайд 2/2 Базовая структура файла карты сайта, имеет следующий вид: . . . Допустимая карта сайта должна начинаться с корневого узла , за которым следует элемент , представляющий домашнюю страницу по умолчанию. В корневой элемент можно вкладывать любое требуемое количество уровней других элементов . Каждый узел карты сайта должен содержать заголовок, описание и URL-адрес, как показано в следующем примере: В этом примере для указания URL-адреса использован синтаксис относительного пути. /, который указывает на корневую папку веб-приложения. Этот стиль не обяза телен, но настоятельно рекомендуется, поскольку он гарантирует правильную интер претацию ссылок карты сайта независимо от текущей папки. Теперь элемент можно использовать для создания карты сайта. Единственное дополнительное ограничение заключается в том, что нельзя создавать два узла карты сайта, имеющие одинаковый URL-адрес.

Определение карты сайта - пример ? xml version=1. 0 encoding=utf-8 ?  site. Map xmlns=http: //schemas.Определение карты сайта — пример

Привязка к карте сайта Как только файл Web. sitemap определен, его можно использовать в странице. Привязка к карте сайта Как только файл Web. sitemap определен, его можно использовать в странице. Здесь как раз очень удобно применять мастер-страницы, чтобы элементы управления навига цией можно было определять как части шаблона и повторно их использовать в каждой странице. Ниже показано, как в мастер-странице определить базовую структуру, которая помещает элементы управления навигации слева и создает объект Site. Map. Data. Source, предоставляющий навигационную информацию другим элементам управления: В качестве решения можно воспользоваться элементом управления Tree. View. Можно добавить Tree. View и привязать его к элементу управления Site. Map. Data. Source на мастер-странице с помо щью Data. Sourcel. D, как показано ниже : Или же воспользоваться элементом управления Menu:

Навигационные цепочки • Элемент Site. Map. Path обеспечивает навигационную це почку (хлебные крошки — breadcrmb) —Навигационные цепочки • Элемент Site. Map. Path обеспечивает навигационную це почку («хлебные крошки» — breadcrmb) — т. е. элемент управления показывает текущее положение пользователя и позволяет ему с помощью ссылок переходить вверх по иерар хии на более высокий уровень.

Элемент управления Site. Map. Path обладает небольшим, но очень важным отли чием от остальных элементов управленияЭлемент управления Site. Map. Path обладает небольшим, но очень важным отли чием от остальных элементов управления навигации, таких как Tree. View и Menu. Элемент Site. Map. Path работает непосредственно с моделью навигации ASP. NET — другими словами, ему не нужно получать свои данные через элемент управления Site. Map. Data. Source. В результате элемент управления Site. Map. Path можно использо вать в страницах, не имеющих элемента управления Site. Map. Data. Source, а изменение свойств Site. Map. Data. Source не будет оказывать влияние на Site. Map. Path. Элемент управления Site. Map. Path определяется следующим образом: Элемент управления Site. Map. Path полезен как для мгновенного получения представ ления о текущей позиции, так и для перемещения вверх по иерархии. Однако его всегда нужно использовать совместно с другими элементами управления навигацией, которые позволяют пользователю перемещаться вниз по иерархии карты сайта.

Свойства Site. Map. Path Свойство Описание Show. Tool. Tips Если это свойство установить в false, текстСвойства Site. Map. Path Свойство Описание Show. Tool. Tips Если это свойство установить в false, текст описания не будет по являться при задержке указателя мыши над частью пути карты сайта Parent. Levels. Displayed Определяет максимальное количество одновременно отображае мых родительских уровней. По умолчанию это свойство имеет значение -1, которое означает, что будут показаны все уровни Render. Current. Node. As. Link Если это свойство установить в true, часть страницы, указы вающая текущую страницу, превращается в выбираемую ссылку. По умолчанию это свойство имеет значение false, т. к. пользова тель уже находится на текущей странице Path. Direction На выбор доступны два варианта: Root. To. Current (по умолча нию) и Current. To. Root (порядок уровней в пути меняется на противоположный) Path. Separator Показывает символы, которые будут помещены между всеми уров нями в пути. По умолчанию это свойство установлено в >. Другим часто используемым разделителем пути является двоеточие (: )

Шаблоны и стили Site. Map. Path Шаблон Стиль Применение Node. Style Node. Template Применяется ко всемШаблоны и стили Site. Map. Path Шаблон Стиль Применение Node. Style Node. Template Применяется ко всем частям пути за ис ключением корневого и текущего узла Current. Node. Style Current. Node. Template Применяется к узлу, представляющему текущую страницу Root. Node. Style Root. Node. Template Применяется к узлу, представляющему корневой узел. Если корневым узлом является текущий узел, используются стили шаблон текущего узла Path. Separator. Style Path. Separator. Template Разделитель между всеми узлами

Пример Site. Map. Path Например, в следующем элементе управления Site. Map. Path используется изображе ние стрелкиПример Site. Map. Path Например, в следующем элементе управления Site. Map. Path используется изображе ние стрелки в качестве разделителя и фиксированная строка полужирного текста для корневого узла. Финальная часть пути, которая представляет текущую страницу, выде ляется курсивом. Root <asp: Label ID=Label 1 runat="server" Text='’>

Элемент управления Tree. View • Элемент управления Tree. View является наиболее функциональным элементом управ ления навигацией.Элемент управления Tree. View • Элемент управления Tree. View является наиболее функциональным элементом управ ления навигацией. Он не только позволяет генерировать многофункциональные пред ставления деревьев, но и поддерживает заполнение частей дерева по запросу (и без обновления всей страницы). Однако более важным фактом является то, что этот эле мент управления поддерживает широкий диапазон стилей, с помощью которых можно преобразовать его внешний вид. Устанавливая всего лишь несколько основных свойств, можно добиться того, что элемент управления Tree. View будет выглядеть не как спра вочный указатель, а как список файлов и папок каталога. В действительности элемент управления Tree. View вообще не нужно генерировать в виде дерева, т. к. он может ра ботать также с неоформленными иерархическими данными — например, с таблицей содержимого — за счет изменения лишь нескольких настроек стиля. • Каждый узел в дереве представлен объектом Tree. Node. Каждый объект Tree. Node имеет связанный с ним фрагмент текста, отображаемый в дереве. Объект Tree. Node предлагает также свойства навигации, такие как Child. Nodes (кол лекция узлов, которые он содержит) и Parent (контейнерный узел, расположенный в дереве на уровень выше).

Свойства Tree. Node Свойство Описание Text Текст, отображаемый в дереве для данного узла Tool. Tip ТекстСвойства Tree. Node Свойство Описание Text Текст, отображаемый в дереве для данного узла Tool. Tip Текст контекстной подсказки, который появляется при наведении указателя мыши на текст узла Value Хранит неотображаемое значение с дополнительными данными об узле (например, уникальный идентификатор, который будет использоваться при обработке событий щелчков для идентификации узла или поиска дополни тельной информации) Navigate. Url Если установить это свойство, оно автоматически переадресует пользо вателя по соответствующему URL-адресу после выбора узла. В против ном случае придется повторно отреагировать на событие Tree. View. Selected. Node. Changed, чтобы решить, какое действие нужно выполнить Target Если свойство Navigate. Url установлено, то это свойство задает искомое окно или фрейм для ссылки. Если свойство Tagret не установлено, то в текущем окне браузера открывается новая страница. Tree. View также имеет свойство Target, с помощью которого можно применить цель по умолчанию для всех экземпляров Tree. Node Image. Url Изображение, которое отображается рядом с этим узлом Image. Tool. Tip Текст контекстной подсказки для изображения, отображаемого рядом с узлом

Tree. View – пример слайд 1/2 protected void Page_Load(object sender, Event. Args e) { if (!Page.Tree. View – пример слайд 1/2 protected void Page_Load(object sender, Event. Args e) { if (!Page. Is. Post. Back) { Data. Set ds = Get. Products. And. Categories(); foreach (Data. Row row in ds. Tables[«Categories»]. Rows) { Tree. Node node. Category = new Tree. Node(row[«Category. Name»]. To. String(), row[«Category. ID»]. To. String()); Tree. View 1. Nodes. Add(node. Category); Data. Row[] child. Rows = row. Get. Child. Rows(ds. Relations[0]); foreach (Data. Row child. Row in child. Rows) { Tree. Node node. Product = new Tree. Node(child. Row[«Product. Name»]. To. String(), child. Row[«Product. ID»]. To. String()); node. Category. Child. Nodes. Add(node. Product); } node. Category. Collapse(); } } }

Tree. View – пример, слайд 2/2 При щелчке на узле можно обработать событие Selected. Node. Changed,Tree. View – пример, слайд 2/2 При щелчке на узле можно обработать событие Selected. Node. Changed, чтобы пока зать информацию об узле: protected void Tree. View 1_Selected. Node. Changed(object sender, Event. Args e) { if (Tree. View 1. Selected. Node == null) return; if (Tree. View 1. Selected. Node. Depth == 0) { lbl. Info. Text = «You selected Category ID: «; } else if (Tree. View 1. Selected. Node. Depth == 1) { lbl. Info. Text = «You selected Product ID: «; } lbl. Info. Text += Tree. View 1. Selected. Node. Value; } }

Стили Tree. View • Элемент управления Tree. View имеет подробную модель стилей, которая позволя ет полностьюСтили Tree. View • Элемент управления Tree. View имеет подробную модель стилей, которая позволя ет полностью управлять его внешним видом. Каждый стиль применяется к типу узла. Стили представляются классом Tree. Node. Style, который унаследован от обычного клас са Style. Подобно другим многофункциональным элементам управления, с помощью стилей можно настраивать цвета фона и изображения, шрифты и границы. Кроме того, класс Tree. Node. Style добавляет свойства стилей, специфичные для узлов. Эти свойства связаны с изображением узла и пространством вокруг него.

Свойства Tree. Node. Style Свойство Описание Image. Url URL-адрес изображения, отображаемого рядом с узлом Node. SpacingСвойства Tree. Node. Style Свойство Описание Image. Url URL-адрес изображения, отображаемого рядом с узлом Node. Spacing Интервал (в пикселях) между текущим узлом и узлами, располо женными над ним и под ним Vertical. Spacing Интервал (в пикселях) между верхней и нижней частями текста узла и границей вокруг текста Horizontal. Spacing Интервал (в пикселях) между левой и правой частью текста узла и границей вокруг текста Child. Nodes. Padding Интервал (в пикселях) между последним дочерним узлом разверну того родительского узла и следующим родственным узлом

Стили Tree. View Свойство Описание Node. Style Применяется ко всем узлам Root. Node. Style Применяется толькоСтили Tree. View Свойство Описание Node. Style Применяется ко всем узлам Root. Node. Style Применяется только к узлам первого уровня (корневой узел) Parent. Node. Style Применяется к любому узлу, содержащему другие узлы, кроме кор невых узлов Leaf. Node. Style Применяется к любому узлу, не содержащему дочерних узлов и не являющемуся корневым узлом Selected. Node. Style Применяется к выбранному на данный момент узлу Hover. Node. Style Применяется к узлу, над которым находится указатель мыши. Эти настройки применяются только в клиентах верхнего уровня, поддерживающих необходимый динамический сценарий

Стили уровней узлов слайд 1/2 • Применение стилей к различным типам узлов само по себе интересно,Стили уровней узлов слайд 1/2 • Применение стилей к различным типам узлов само по себе интересно, хотя более полезной особенностью является возможность применения стилей на основе уровня узла. Объясняется это тем, что большинство деревьев используют жесткую иерархию. В рассматриваемом случае важно определить не нали чие дочерних узлов в данном узле, а его глубину. • Единственная проблема состоит в том, что элемент управления Tree. View теоре тически может иметь неограниченное количество уровней узлов. В связи с этим нет смысла предлагать такие свойства, как First. Level. Style, Second. Level. Style и т. д. Наоборот, Tree. View имеет коллекцию Level. Styles, которая может иметь столько эле ментов, сколько необходимо. Уровень выводится из позиции стиля в коллекции, поэто му первый элемент считается корневым уровнем, второй элемент — вторым уровнем узла и т. д. Чтобы такая система могла работать, понадобится повторить этот порядок и включить пустой заполнитель стиля, если необходимо пропустить уровень, не изменяя форматирование.

Стили уровней узлов слайд 2/2 Например, ниже показан элемент управления Tree. View, в котором отступы неСтили уровней узлов слайд 2/2 Например, ниже показан элемент управления Tree. View, в котором отступы не ис пользуются. Вместо них для разделения уровней устанавливаются разные промежутки и выбираются разные шрифты:

Изображения в Tree. View • Как уже известно, изображение для одиночного узла можно задать с помощьюИзображения в Tree. View • Как уже известно, изображение для одиночного узла можно задать с помощью свой ства Tree. View. Node. Image. Url. К счастью, когда требуется назначить последовательный набор изображений для всего дерева, применять такой детальный подход не придет ся. Вместо этого можно использовать свойства Tree. View для установки изображений для всех узлов. Можно выбрать картинку, которая будет отображаться рядом со всеми свернутыми узлами (Collapsed. Url), всеми развернутыми узлами (Expandlmage. Url) и всеми узлами, которые не имеют дочерних узлов и поэтому не могут быть развернуты (No. Expandlmage. Url). Если задать эти свойства и определить изображение для опреде ленного узла с помощью свойства Tree. View. Node. Image. Url, то преимущество будет от дано изображению, определенному для узла. • Элемент управления Tree. View имеет коллекцию изображений, которыми можно пользоваться, чтобы не тратить время на создание специальных изображений для уз лов. Для доступа к этим изображениям предназначено свойство Tree. View. Image. Set, которое принимает одно из 16 значений из перечисления Tree. View. Image. Set. Каждый набор включает изображение для свернутого и развернутого узла, а также для узла, не имеющего дочерних узлов. Применяя свойство Image. Set, можно отказаться от исполь зования любых других свойств, связанных с изображениями.

Элемент управления Menu • ASP. NET предлагает еще один многофункциональный элемент управления, поддер живающий иерархические данныеЭлемент управления Menu • ASP. NET предлагает еще один многофункциональный элемент управления, поддер живающий иерархические данные — Menu. Подобно Tree. View, элемент управления Menu можно связать с источником данных или заполнить его вручную с помощью объектов Menultem. • Класс Menultem не является таким же многофункциональным, как Tree. Node — на пример, объекты Menultem не поддерживают флажки или программную установку раз вернутого/свернутого состояния. Тем не менее, у них есть много похожих свойств, сре ди которых свойства, отвечающие за настройку изображений, определяющие, можно ли выбирать элемент, а также свойства, определяющие целевую ссылку.

Свойства Men. Item Свойство Описание Text Текст, отображаемый в меню для данного элемента (при его отображении)Свойства Men. Item Свойство Описание Text Текст, отображаемый в меню для данного элемента (при его отображении) Tool. Tip Текст контекстной подсказки, которая появляется при наведении указателя мыши на элемент меню Value Хранит неотображаемое значение с дополнительными данными об элементе меню (например, уникальный идентификатор, используе мый при обработке событий щелчка для идентификации узла или поиска дополнительной информации) Navigate. Url Если это значение установлено, то при щелчке на данном узле он автоматически направляет пользователя по указанному URL-адресу. В противном случае придется повторно среагировать на событие Menu. Item. Click, чтобы решить, какое действие нужно выполнить Target Если свойство Navigate. Url установлено, это свойство задает искомое окно или фрейм для ссылки. Если свойство Target не задано, то в текущем окне браузера будет открыта новая страница. Элемент управления Menu также предоставляет свойство Target, с помощью которого можно определить, какая цель будет использо ваться по умолчанию для всех экземпляров Menultem Selectable Если это свойство будет иметь значение false, то элемент нельзя будет выбрать. Обычно значение false присваивается этому свой ству только тогда, когда элемент является подзаголовком, содержа щим выбираемые дочеркие элементы Image. Url Если это свойство установлено, оно будет определять изображе ние, отображаемое рядом с элементом меню (справа от текста). По умолчанию изображение не используется Pop. Out. Image. Url Изображение, которое отображается рядом с элементом меню (справа от него), если этот элемент имеет вложенные элемен ты меню. По умолчанию этим изображением является маленькая сплошная стрелка Separatorlmage. Url Изображение, которое отображается непосредственно под этим элементом меню, чтобы отделить его от следующего элемента

Menu - пример protected void Page_Load(object sender, Event. Args e) { if (!Page. Is. Post. Back)Menu — пример protected void Page_Load(object sender, Event. Args e) { if (!Page. Is. Post. Back) { Data. Set ds = Get. Products. And. Categories(); foreach (Data. Row row in ds. Tables[«Categories»]. Rows) { Menu. Item item. Category = new Menu. Item( row[«Category. Name»]. To. String(), row[«Category. ID»]. To. String()); Menu 1. Items. Add(item. Category); Data. Row[] child. Rows = row. Get. Child. Rows(ds. Relations[0]); foreach (Data. Row child. Row in child. Rows) { Menu. Item item. Product = new Menu. Item(child. Row[«Product. Name»]. To. String(), child. Row[«Product. ID»]. To. String()); item. Category. Child. Items. Add(item. Product); } } protected void Menu 1_Menu. Item. Click(object sender, System. Web. UI. Web. Controls. Menu. Event. Args e) { if (Menu 1. Selected. Item == null) return; if (Menu 1. Selected. Item. Depth == 0) { lbl. Info. Text = «You selected Category ID: «; } else if (Menu 1. Selected. Item. Depth == 1) { lbl. Info. Text = «You selected Product ID: «; } lbl. Info. Text += Menu 1. Selected. Item. Value; }

Отличия Tree. View и Menu • Элемент управления Menu отображает одно подменю. Элемент управления Tree. ViewОтличия Tree. View и Menu • Элемент управления Menu отображает одно подменю. Элемент управления Tree. View может раскрывать произвольное количество ветвей узла одновременно. • Элемент управления Menu отображает корневой узел ссылок в странице. Все дру гие элементы отображаются с помощью плавающих меню, которые появляются над любым другим содержимым на странице. Элемент управления Tree. View по казывает все свои элементы внутри страницы. • Элемент управления Tree. View поддерживает заполнение по запросу и обратные вызовы на стороне клиента. Элемент управления Menu не поддерживает их. • Элемент управления Menu поддерживает шаблоны. Элемент управления Tree. View не поддерживает их. • Элемент управления Tree. View поддерживает флажки для любого узла. Элемент управления Menu не поддерживает их. • Элемент управления Menu поддерживает горизонтальную и вертикальную ком поновку, в зависимости от значения свойства Orientation. Элемент управления Tree. View поддерживает только вертикальное размещение.

Стили Menu слайд 1/2 • Элемент управления Menu предлагает огромное количество стилей. Подобно Tree. View, MenuСтили Menu слайд 1/2 • Элемент управления Menu предлагает огромное количество стилей. Подобно Tree. View, Menu является специальным классом, производным от базового клас са Style: в действительности таких классов два — Menu. Style и Menu. Item. Style. Эти стили делают доступными свойства интервалов (Item. Spacing, Horizontal. Padding и Vertical. Padding). Однако посредством стиля нельзя задавать изображения элемента меню, поскольку у него нет свойства Image. Url. • Подобно Tree. View, элемент управления Menu поддерживает определение стилей меню для различных уровней меню. Однако главная отличительная особенность, сви детельствующая в пользу элемента управления Menu, связана со статическими элемен тами (элементами корневого уровня, которые отображаются на странице при первой ее генерации) и динамическими элементами (элементами в плавающих меню, которые до бавляются при наведении указателя мыши на часть меню). На большинстве веб-сайтов существует четкое различие в применении стилей к этим двум элементам. Для этого в классе меню определены два параллельных набора стилей: один применяется к стати ческим элементам, а другой — к динамическим

Стили Menu слайд 2/2 Статический стиль Динамический стиль Описание Static. Menu. Style Dynamic. Menu. Style ОпределяетСтили Menu слайд 2/2 Статический стиль Динамический стиль Описание Static. Menu. Style Dynamic. Menu. Style Определяет внешний вид всего «окна», в котором появляются все элементы меню. В случае Static. Menu. Style это «окно» отображается на странице, а в случае Dynamic. Menu. Style — как всплывающее «окно» Static. Menu. Item. Style Dynamic. Menu. Item. Style Определяет внешний вид отдель ных элементов меню Static. Selected. Style Dynamic. Selected. Style Определяет внешний вид выбран ного элемента. Имейте в виду, что выбранным является не тот элемент, на который наведен ука затель, а тот элемент, который был выбран до этого щелчком мыши (и который инициировал послед нюю обратную отправку) Static. Hover. Style Dynamic. Hover. Style Определяет внешний вид элемен та, на который пользователь навел указатель мыши

Оформление приложений • Построение профессионального веб-приложения не ограничивается проектирова нием индивидуальных веб-страниц. Для этого требуются такжеОформление приложений • Построение профессионального веб-приложения не ограничивается проектирова нием индивидуальных веб-страниц. Для этого требуются также инструменты, ко торые позволят объединить разрозненные веб-страницы в завершенный, единообразный веб-сайт. Для этого в ASP. NET определены два средства: • Темы — позволяют определять детали форматирования разнообразных элементов управления и легко повторно использовать эти форматы во множестве стра ниц. Темы значительно упрощают стандартизацию внешнего вида и поведения веб-сайта и последующую его настройку. Как только тема применена, всему веб-сайту можно придать новый облик, просто изменив определение темы. • Мастер-страницы — позволяют создавать многократно используемые шаблоны страниц. С помощью мастер-страницы можно определить компоновку своих веб-страниц, которая будет включать все обычные детали — заголовки, панели меню и баннеры. Как только эта структура формализована, мастер-страницу можно использовать во всем веб-сайте, обеспечивая единство дизайна всех страниц. В результате посетители веб-сайта смогут переходить от одного его раз дела к другому, не замечая никаких изменений.

Каскадные таблицы стилей • Чтобы придать дизайну веб-сайта завершенный вид, прежде всего, нужно вырабо тать единообразныйКаскадные таблицы стилей • Чтобы придать дизайну веб-сайта завершенный вид, прежде всего, нужно вырабо тать единообразный визуальный стиль. Другими словами, понадобится стандартизиро вать каждый элемент дизайна. Если необходимо настроить шрифт или границы кнопки, то эти изменения должны затронуть каждую кнопку веб-сайта. Сохранение единообразия не всегда просто. Чтобы упростить эту задачу, можно воспользоваться каскадными таб лицами стилей ( Cascading Style Sheets — CSS ) или темами. • Каскадные таблицы стилей обеспечивают межплатформенное решение для форма тирования веб-страниц, которое работает в HTML или XHTML и поддерживается прак тически всеми современными браузерами.

Создание таблицы стилей слайд 1/2 • Чтобы ис пытать ее в действии и добавить (почти) пустуюСоздание таблицы стилей слайд 1/2 • Чтобы ис пытать ее в действии и добавить (почти) пустую таблицу стилей в веб-проект, в Visual Studio следует выбрать пункт меню Website -> Add New Item (Веб-сайт->Добавить новый элемент) (или пункт меню Project -> Add New Item (Проект->Добавить новый элемент), если используется модель веб-проекта). Затем выбрать элемент Style Sheet (Таблица стилей), указать нужное имя файла и щелкнуть на кнопке ОК.

Создание таблицы стилей слайд 2/2 155 Создание таблицы стилей слайд 2/

Использование таблицы стилей • link href=Style. Sheet. css rel=stylesheet type=text/css / • asp: Label Css. Class=headingИспользование таблицы стилей • • •

This control uses the block. Text style. This с ontrol uses the block. Text style. This control uses the block. Text style.

Темы • Правила CSS ограничены фиксированным набором атрибутов стилей. Они позволяют повторно использовать специфические нюансы форматированияТемы • Правила CSS ограничены фиксированным набором атрибутов стилей. Они позволяют повторно использовать специфические нюансы форматирования (шрифты, границы, цвета переднего плана и фона и т. д. ), но явно не способны контролировать другие аспекты элементов управле ния ASP. NET. Например, Check. Box. List имеет свойства, которые управляют организа цией элементов в виде строк и столбцов. Хотя эти свойства влияют на внешний вид элемента управления, они находятся вне области действия CSS , поэтому их придется устанавливать вручную. Кроме того, вместе с форматированием может требоваться определить нужные аспекты поведения элемента управления. Например, разработчику может понадобится стандартизировать режим выбора элемента управления Calendar или перенос текста в окне Text. Box. Понятно, что решить такие задачи с помощью CSS не получится. • Темы ( theme ) заполняют этот пробел. Как и CSS , темы позволяют определять набор атрибутов сти лей, которые можно применять к элементам управ ления во многих страницах. Однако, в отличие от CSS , темы не реализуются браузером. Напротив, они являются встроенным решением ASP. NET , реа лизуемым на сервере. Хотя темы не заменяют сти ли, они обладают рядом возможностей, которые CSS не в состоянии предоставить.

Особенности тем • Темы создаются на основе элементов управ ления, а не HTML -разметки.  ВОсобенности тем • Темы создаются на основе элементов управ ления, а не HTML -разметки. В результате темы позволяют определять и повторно ис пользовать практически любое свойство эле мента управления. • Темы применяются на сервере. Когда тема применяется к странице, пользова телю отправляется окончательная стилизованная страница. Если используется таблица стилей, то браузер получает информацию о странице и стиле, а затем объединяет их на стороне клиента. • Темы могут применяться через конфигурационные файлы. Это обстоятельство позволяет применять тему ко всей папке или ко всему веб-сайту, не модифицируя одиночные веб-страницы. • Темы реализуют каскадирование иначе, чем CSS. В основном, если свойство оп ределено в теме и в отдельном элементе управления, то значение в теме перепи сывает свойство в элементе управления. Однако это поведение можно изменить и отдать предпочтение свойствам страницы, что делает поведение тем более похо жим на поведение таблиц стилей.

Папки тем и обложки • Все темы специфичны для приложений. Чтобы использовать тему в веб-приложе нии,Папки тем и обложки • Все темы специфичны для приложений. Чтобы использовать тему в веб-приложе нии, нужно создать папку, которая определяет данную тему. Эта папка должна быть по мещена в папку App Themes, размещенную внутри каталога верхнего уровня веб-при ложения. Иначе говоря, веб-приложение по имени Super. Commerce могло бы содержать тему Funky. Theme в папке Super. Commerce \ App _ Theme \ Funky. Theme. • Приложение может содержать определения нескольких тем при условии, что каждая тема будет храниться в отдельной папке. На отдельно взятой странице одновременно может быть активной только одна тема. Динамическое изменение активной темы во время обработки страницы описано ниже. • Чтобы тема действительно могла выполнять какие-либо действия, понадобится соз дать хотя бы один файл обложки (skin) в папке темы. Файл обложки представляет собой текстовый файл с расширением . skin. ASP. NET никогда не работает с файлами обло жек напрямую — они используются «за кулисами» для определения темы. • Файл обложки представляет собой список дескрипторов элементов управле ния, но с одной характерной особенностью. Дескрипторы элементов управления в фай ле обложки не обязательно должны определять полностью элемент управления. Вместо этого они должны устанавливать только те свойства, которые требуется стандартизиро вать. Например, если требуется применить единообразную цветовую схему, то интерес могут представлять только такие свойства, как Fore. Color и Back. Color. При добавлении дескриптора элемента управления List. Box, он может выглядеть следующим образом: • • Часть runat=»server» является обязательной, а все остальное — нет. Атрибут id для темы неприменим, т. к. он необходим для уникальной идентификации каждого эле мента управления в реальной веб-странице. • Разработчик должен принять решение — создавать множество файлов обло жек или же помещать все дескрипторы элементов управления в один такой файл. Оба подхода эквивалентны, поскольку ASP. NET обрабатывает все файлы обложек в каталоге темы как часть одного и того же определения темы. Часто дескрипторы сложных эле ментов управления (таких как элементы управления данными) целесообразно разделять на отдельные файлы обложек.

Применение простой темы слайд 1/2 • Чтобы добавить тему в проект, следует выбрать пункт меню WebsiteПрименение простой темы слайд 1/2 • Чтобы добавить тему в проект, следует выбрать пункт меню Website -> Add New Item (Веб сайт-> Добавить новый элемент) (или Project -> Add New Item (Проект->Добавить новый элемент)), а затем элемент Skin File (Файл обложки). Visual Studio предупредит о том, что файлы обложек должны быть помещены в подпапку App Themes , и запросит, тре буется ли сделать это. При выборе ответа Yes (Да) среда Visual Studio создаст папку с тем же именем, что и у файла темы. После этого папке и файлу можно назначить любые подходящие имена.

Применение простой темы слайд 2/2 • Visual Studio не поддерживает создание тем во время проектирования, поэтомуПрименение простой темы слайд 2/2 • Visual Studio не поддерживает создание тем во время проектирования, поэтому ко пировать и вставлять дескрипторы элементов управления из других веб-страниц при дется вручную. Ниже приведен пример обложки, которая устанавливает цвета изобра жения и фона для нескольких обычно используемых элементов управления: • Чтобы применить тему к веб-странице, атрибуту Theme директивы Page нужно при своить имя папки своей темы. ( ASP. NET автоматически просмотрит все файлы обложек в этой теме. ) •

Конфликты темы • При возникновении конфликта между свойствами элементов управления и темы предпочтение отдается теме. ОднакоКонфликты темы • При возникновении конфликта между свойствами элементов управления и темы предпочтение отдается теме. Однако в некоторых случаях может потребоваться изменить это поведение, чтобы элементы управления могли уточнять тему, замещая определенные ее нюансы. ASP. NET предоставляет такую возможность, хотя и по принципу «все или ничего» — произведенное изменение применяется ко всем элементам управления целой страницы. • Чтобы внести это изменение, достаточно в директиве Page вместо атрибута Theme использовать атрибут Style. Sheet. Theme. Например: • • Теперь нестандартный желтый цвет фона окна списка List. Box получает преиму щество над цветом фона, указанным в теме. Поскольку цвет изображения был изменен на белый, чтение стало затруднительным. Перекрытие спецификаций форматирования может вызвать затруднения подобного рода, поэтому часто лучше с помощью атрибута Theme предос тавить темам всю полноту управления. • Еще один вариант — конфигурирование отдельных элементов управления таким образом, чтобы полностью их исключить из процесса формирования темы. Для этого потребуется просто присвоить свойству Enable. Theming элемента управления значе ние false. ASP. NET применит тему к остальным элементам управления на странице, но пропустит сконфигурированный вами элемент управления. •

Множество обложек одного элемента управления • Ограничение всех элементов управления единым форматом — прекрасный спо собМножество обложек одного элемента управления • Ограничение всех элементов управления единым форматом — прекрасный спо соб стандартизации, но этот подход недостаточно гибок для реальных приложений. Например, может существовать несколько типов текстовых полей, которые различают ся по месту их использования или по типу содержащихся в них данных. Вероятность наличия различных вариантов надписей еще выше — они могут применяться как в за головках, так и в основном тексте. К счастью, ASP NET позволяет создавать несколько объявлений для одного и того же элемента управления. • Обычно при создании более одной темы для одного элемента управления ASP. NET выведет сообщение об ошибке сборки, в котором будет сказано, что для каждого элемен та управления может существовать только одна обложка по умолчанию. Чтобы обой ти эту проблему, необходимо создать именованную обложку, указав атрибут Skin. ID. Например : • Именованные обложки не применяются автоматически как обложки по умолчанию. Чтобы использовать именованную обложку, на веб-странице понадобит ся установить атрибут Skin. ID элемента управления. Это значение можно выбрать из раскрывающегося списка, который Visual Studio создает на основе имен всех опреде ленных обложек, либо ввести вручную:

Обложки с шаблонами и изображениями слайд 1/2 • В файле обложки можно создать более подробные дескрипторыОбложки с шаблонами и изображениями слайд 1/2 • В файле обложки можно создать более подробные дескрипторы элементов управления. Большинство свойств элементов управления поддерживают темы. Если свойство нельзя объявить в теме, то при попытке запуска приложения возникнет ошибка сборки. • Например, многие элементы управления поддерживают стили, которые указывают диапазон применения информации о форматировании. Одним из примеров являются элементы управления данными, а другим — элемент управления Calendar (календарь). Ниже показано, как стили элемента управления Calendar можно определить в файле обложки, чтобы они соответствовали теме: • Эта обложка определяет шрифт, цвета и стили элемента управления Calendar. Оно устанавливает также режим выбора, форматирование ссылок навигации по месяцам и общий размер календаря. В результате, чтобы использовать этот отформатированный календарь, понадобится только следующий простой дескриптор: • </p> </div> <div class="description" itemscope itemtype="http://schema.org/ImageObject"><meta itemprop="name" content=""/><meta itemprop="width" content="720 px"/><meta itemprop="height" content="540 px"/> <p itemprop="description caption"><img class="imgdescription" itemprop="contentUrl thumbnail" alt="Обложки с шаблонами и изображениями слайд 2/2 • Еще один действенный подход — повторное использование изображений," title="Обложки с шаблонами и изображениями слайд 2/2 • Еще один действенный подход — повторное использование изображений," src="/docs//asp_net_images/asp_net_164.jpg">Обложки с шаблонами и изображениями слайд 2/2 • Еще один действенный подход — повторное использование изображений, когда они делаются частью темы. Предположим, что на веб-сайте нужно использовать одно изо бражение для кнопок ОК, а другое — для всех кнопок Cancel (Отмена). Для реализации такого дизайна первым делом понадобится добавить изображения в папку темы. Для лучшей организации целесообразно создать одну или более подпапок специально для хранения изображений. • Теперь нужно создать обложки, которые будут использовать эти изображения. В дан ном случае оба эти дескриптора должны быть именованными темами. Причина в том, что мы определяем особый тип стандартизированной кнопки, которая должна быть доступна на странице при необходимости, а не стиль, который должен применяться ко всем кнопкам. • При добавлении ссылки на изображение в файл обложки всегда необходимо проверять, что URL-адрес изображения указан относительно папки темы, а не папки, в которой хра нится страница. Когда эта тема будет применяться к элементу управления, ASP. NET ав томатически вставит часть Themes \Имя_Темы в начало URL-адреса. • Теперь, чтобы применить эти изображения, достаточно создать на своей веб-стра- нице элемент управления Image. Button, который будет ссылаться на соответствующее имя обложки: </p> </div> <div class="description" itemscope itemtype="http://schema.org/ImageObject"><meta itemprop="name" content=""/><meta itemprop="width" content="720 px"/><meta itemprop="height" content="540 px"/> <p itemprop="description caption"><img class="imgdescription" itemprop="contentUrl thumbnail" alt="Тема и каскадные таблицы стилей ASP. NET позволяет также использовать таблицу стилей в качестве части темы." title="Тема и каскадные таблицы стилей ASP. NET позволяет также использовать таблицу стилей в качестве части темы." src="/docs//asp_net_images/asp_net_165.jpg">Тема и каскадные таблицы стилей ASP. NET позволяет также использовать таблицу стилей в качестве части темы. Потребность в этой возможности может возникнуть по нескольким причинам. • Требуется выработать стиль HTML -элементов, которые могут не соответствовать серверным элементам управления. • Предпочтительнее применять таблицу стилей, потому что она является более стандартизированной или может использоваться также для форматирования ста тических HTML -страниц. • Для создания таблицы стилей уже были затрачены значительные усилия, поэтому создавать темы для выполнения того же форматирования нежелательно. • Для использования в теме таблица стилей сначала должна быть добавлена в папку темы. ASP. NET произведет поиск файлов. css в этой папке и динамически свяжет их с любой страницей, на которой используется эта тема. Чтобы связать страницу с таб лицей стилей, среда ASP NET должна иметь возможность вставить дескриптор в раздел веб-страницы. Это возможно только в том случае, если дескриптор имеет атрибут runat=»server» : <title>Untitled Page В результате элемент превращается в элемент управления серверной сторо ны, который ASP NET может модифицировать для вставки ссылок таблицы стилей. Как только это будет сделано, для получения доступа к правилам таблицы стилей достаточ но установить атрибут Theme страницы. Затем можно установить свойство Css. Class элементов управления, которые требуется форматировать. Любые правила стилей, связанные непосредственно с HTML -дескрипторами, применяются автоматически. В теме можно иметь столько таблиц стилей, сколько требуется. ASP NET добавит не сколько дескрипторов — по одному для каждой таблицы стилей, используемой в теме.

Динамическое применение тем слайд 1/3 В некоторых случаях темы используются не для стандартизации внешнего вида вебДинамическое применение тем слайд 1/3 В некоторых случаях темы используются не для стандартизации внешнего вида веб сайта, а для предоставления пользователям возможности его настройки. В этом случае веб-приложение позволяет указывать тему, которая будет применена к страницам. Все, что понадобится сделать — это динамически установить свойство Page. Theme или Page. stylesheet в коде. Этот шаг должен быть выполнен во время генерации события Page. Prelnit. После него по пытка задания этого свойства вызовет исключение. Ниже приведен пример, в котором динамическая тема применяется за счет чтения имени темы из текущей коллекции Session: protected void Page_Pre. Init(object sender, Event. Args e) { if (Session[«Theme»] == null) { Page. Theme = «»; } else { Page. Theme = (string)Session[«Theme»]; } }

Динамическое применение тем слайд 2/3 • Если требуется создать страницу, которая позволит пользователям выбирать тему, придетсяДинамическое применение тем слайд 2/3 • Если требуется создать страницу, которая позволит пользователям выбирать тему, придется прибегнуть к одному ухищрению. Сложность в том, что выбор, произведенный пользователем, нельзя прочитать до окончания загрузки страницы и завершения эта па Prelnit. Однако на этом этапе устанавливать тему уже слишком поздно. Одним из способов решения этой проблемы является обновление страницы, при котором стра ница переадресуется к себе самой. Наиболее эффективный прием — воспользовать ся методом Server. Transfer(), чтобы вся обработка происходила на сервере.

Динамическое применение тем слайд 3/3 protected void Page_Load(object sender, Event. Args e) { if (!Page. Is.Динамическое применение тем слайд 3/3 protected void Page_Load(object sender, Event. Args e) { if (!Page. Is. Post. Back) { Directory. Info theme. Dir = new Directory. Info(Server. Map. Path(«App_Themes»)); lst. Themes. Data. Text. Field = «Name»; lst. Themes. Data. Source = theme. Dir. Get. Directories(); lst. Themes. Data. Bind(); } } protected void cmd. Apply_Click(object sender, Event. Args e) { Session[«Theme»] = lst. Themes. Selected. Value; Server. Transfer(Request. File. Path); }

Стандартизация компоновки Стандартизация форматирования веб-сайта — это только половина дела. Нужно еще обеспечить,  чтобы общиеСтандартизация компоновки Стандартизация форматирования веб-сайта — это только половина дела. Нужно еще обеспечить, чтобы общие элементы, такие как верхний колонтитул веб-сайта и элемен ты управления навигацией, появлялись на каждой странице в одном и том же месте. Задача состоит в том, чтобы создать простую и гибкую компоновку, которую мож но было бы воспроизводить во всем веб-сайте. Для этого предназначены три основных подхода. • Пользовательские элементы управления позволяют определить pagelet — часть веб-страницы, содержащую код разметки и код, выполняемый на стороне сервера, которую можно повторно использовать во множестве веб-форм по своему усмотрению. Пользовательские элементы управле ния прекрасно подходят для стандартизации общего элемента страницы. Однако сами по себе они не могут решить проблему компоновки, поскольку невозможно добиться того, чтобы пользовательские элементы управления располагались в од ном и том же месте на каждой странице. • HTML -фреймы. Фреймы являются базовым инструментом HTML , с помощью ко торого в окне браузера можно одновременно отображать более одной страницы. Главный недостаток фреймов связан с тем, что получение каждой страницы про исходит посредством отдельного запроса к серверу, поэтому код каждой страницы должен быть полностью независимым. • Мастер-страницы — это средство ASP. NET , разработанное спе циально для стандартизации компоновки веб-страниц. Мастер-страницы пред ставляют собой шаблоны веб-страниц, которые могут определять фиксированное содержимое и объявлять часть веб-страницы, куда можно помещать нестандарт ное содержимое. При использовании одной и той же мастер-страницы во всем веб-сайте компоновка гарантированно будет одинаковой. В ASP. NET использование мастер-страниц является предпочтительным вариантом стандартизации компоновки веб-сайта.

Основы мастер-страниц Чтобы можно было обеспечить практическое и гибкое решение для создания шабло нов страниц, долженОсновы мастер-страниц Чтобы можно было обеспечить практическое и гибкое решение для создания шабло нов страниц, должен быть удовлетворен ряд требований. • Должна существовать возможность определения части страницы отдельно и по вторного ее использования во множестве страниц. • Должна существовать возможность создания фиксированной компоновки, опре деляющей редактируемые области. В страницах, повторно использующих этот шаблон, можно будет добавлять или модифицировать содержимое только в раз решенных областях. • Должна быть возможность ограниченной настройки элементов, повторно исполь зуемых на каждой странице. • Должна существовать возможность связывания страницы с шаблоном страницы декларативно (без кода) или со страницей динамически во время выполнения. • Должна обеспечиваться возможность проектирования страницы, использующей шаблон страницы, с помощью таких инструментов, как Visual Studio. Мастер-страницы соответствуют всем этим требованиям. Они обеспечивают систе му для повторного использования шаблонов, способ ограничения модификации шабло нов и широкую поддержку во время проектирования. Чтобы это все работало, в ASP. NET определены два новых типа страниц: мастер-страницы и страницы содержимого. Мастер-страница представляет собой шаблон страницы. Как и обычная веб-страница ASP. NET , она может содержать любую комби нацию HTML , веб-элементов управления и даже кода. Кроме того, мастер-страницы могут включать заполнители содержимого — определенные модифицируемые области. Каждая страница содержимого ссылается на одну мастер-страницу и получает ее ком поновку и содержимое. Также страница содержимого может добавлять характерное для страницы содержимое в любые заполнители. Другими словами, страница содержимого заполняет отсутствующие части, которые не определены в мастер-странице. Например, на обычном веб-сайте мастер-страница может включать фиксированный элемент, например, верхний колонтитул, и заполнитель содержимого для остальной части страницы. Страница содержимого получает этот колонтитул и предоставляет до полнительное содержимое.

Простая мастер-страница • Чтобы создать мастер-страницу в Visual Studio , следует выбрать пункт меню  WebsitesПростая мастер-страница • Чтобы создать мастер-страницу в Visual Studio , следует выбрать пункт меню Websites -> Add New Item (Веб-сайт -> Добавить новый элемент). Затем указать элемент Master Page (Мастер-страница), назначить имя (например, Site. Template. master ) и щелкнуть на кнопке Add (Добавить). • Мастер-страница подобна обычной веб-форме ASP. NET. Как и веб-форма, мастер-страница может включать HTML -разметку, веб-элементы управления и код (встроен ный блок сценария либо отдельный файл). Одно различие между ними заключается в том, что веб-формы начинаются с директивы Page, » а мастер-страница — с директивы Master, определяющей ту же информацию: • • Другое различие между мастер-страницами и обычными веб-формами состоит в том, что мастер-страницы могут использовать элемент управления Content. Place. Holder, а обычные страницы — нет. Content. Place. Holder является частью страницы, в которую страница содержимого может вставлять содержимое.

Создание мастер-страницы • При создании новой мастер-страницы в Visual Studio процесс начинается с создания пустой страницы,Создание мастер-страницы • При создании новой мастер-страницы в Visual Studio процесс начинается с создания пустой страницы, включающей два элемента управления Content. Place. Holder. Один определен в разделе , благодаря чему страницы содержимого получают возмож ность добавлять метаданные страницы, такие как ключевые слова поиска или ссылки на таблицы стилей. Второй, более важный, элемент управления Content. Place. Holder определен в разделе и представляет видимое содержимое страницы. Он ото бражается на странице как прямоугольник с нестандартным контуром. Если щелк нуть внутри него или задержать над ним указатель мыши, имя элемента управления Content. Place. Holder отобразится в подсказке. Чтобы создать более слож ные компоновки страницы, можно добавить дополнительную разметку и элементы управления Content. Place. Holder.

Пример мастер-страницы @ Master Language=C# Auto. Event. Wireup=true Code. File=Site. Template. master. cs Inherits=Site. Template Пример мастер-страницы Untitled Page

My Site

Copyright © 2008.

Простая страница содержимого слайд 1/2 • Для использования созданной мастер-страницы в другой веб-странице необходи мо добавитьПростая страница содержимого слайд 1/2 • Для использования созданной мастер-страницы в другой веб-странице необходи мо добавить атрибут Master. Page. File к директиве Page. Этот атрибут показывает имя файла требуемой мастер-таблицы: • • Атрибут Master. Page. File начинается с пути. /, который указывает корневую папку веб-сайта. • Установки атрибута Master. Page. File недостаточно для преобразования простой страницы в страницу содержимого. Единственная обязанность страницы содержимого — определение содержимого, которое будет вставлено в один или несколько элементов управления Content. Place. Holder. Страница содержимого не определяет страницу, поскольку внешняя оболочка уже предоставлена мастер-страницей. • Чтобы предоставить содержимое для элемента управления Content. Place. Holder, используется другой специализированный элемент управления, называемый Content. Для каждого элемента управления Content. Place. Holder в мастер-странице страница содержимого предоставляет соответствующий элемент управления Content (если для данной области вообще должно предоставляться содержимое). ASP. NET связывает элемент управления Content с соответствующим элементом управления Content. Place. Holder , сопоставляя ID элемента Content. Place. Holder со свойством Content. Place. Holderl. D соответствующего элемента управления Content. Если создать элемент управления Content, который будет ссылаться на несуществующий элемент управления Content. Place. Holder, во время выполнения возникнет ошибка. • Таким образом, чтобы создать полную страницу содержимого, которая использует мастер-страницу Site. Template , нужно просто заполнить содержимое для элемента управления Content. Place. Holder с идентификатором Content. Place. Holder 1.

Простая страница содержимого слайд 2/2 • @ Page Language=C# Master. Page. File=~/Site. Template. master Auto. Event.Простая страница содержимого слайд 2/2 • • •

Far out in the uncharted backwaters of the unfashionable end of the western spiral arm of the Galaxy lies a small unregarded yellow sun.

• • Custom Title

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

или в элементе управления Panel. После этого информация из страницы содержимого может беспрепятственно передаваться в эти контейнеры, автоматически принимая подходящие атрибуты стилей. • Для динамического конфигурирования мастер-страницы или страницы содержимо го можно воспользоваться событием Page. Load в любом классе. В некоторых случаях код инициализации придется помещать и в мастер-страницу, и в страницу содержимо го. В таких ситуациях важно понять порядок, в котором генерируются соответствующие события. Сначала ASP. NET создает элементы управления для мастер-страницы, а затем дочерние элементы управления для страницы содержимого. После этого генерируется событие Page. Init для мастер-страницы, а за ним — такое же событие для страницы содержимого. Аналогичная последовательность имеет место и для события Page. Load. Таким образом, в случае возникновения конфликта настройки, выполняемые в стра нице содержимого (например, изменение заголовка страницы), получают преимуще ство по сравнению с изменениями, которые выполняются на этом же этапе в мастер-странице.

Содержимое по умолчанию • Когда мастер-страница определяет элемент управления Content. Place. Holder,  она может такжеСодержимое по умолчанию • Когда мастер-страница определяет элемент управления Content. Place. Holder, она может также включать содержимое по умолчанию — содержимое, которое будет исполь зовано только в том случае, если страница содержимого не предоставит соответствую щий элемент управления Content. • Чтобы добиться этого эффекта, достаточно поместить соответствующие элементы управления HTML или веб-элементы управления в дескриптор Content. Place. Holder. • Ниже приведен пример, в котором содержимое по умолчанию добавляется к тексту баннера из предыдущего примера: • Master Pages Website • Если страница содержимого создается в Visual Studio , никаких не медленных изменений отображено не будет. Visual Studio автоматически создает дескриптор для каждого элемента управления Content. Place. Holder. Если страница со держимого включает дескриптор , он автоматически замещает содержимое, используемое по умолчанию. Однако если дескриптор удалить, отобразится содержимое по умолчанию — новый текст баннера » Master Pages Website «.

Мастер-страницы и компоновка таблицами и CSS слайд 1/3 • По большей части, в HTML используется потоковаяМастер-страницы и компоновка таблицами и CSS слайд 1/3 • По большей части, в HTML используется потоковая компоновка. Это значит, что по мере добавления содержимого страница реорганизуется, приводя к растягиванию ос тального содержимого. Такая компоновка может затруднить получение желаемого ре зультата, когда применяются мастер-страницы. Например, можно получить хорошую компоновку только лишь для того, чтобы деформировать структуру большим блоком информации, вставляемым в дескриптор . • Чтобы справиться с такими задачами, большинство мастер-страниц будут приме нять либо HTML -таблицы, либо CSS -позиционирование для управления компоновкой. • При использовании таблиц вся страница или ее часть разбивается на столбцы и строки. Если затем добавить Content. Place. Holder в одну ячейку, то остальное содержи мое будет выровнено более-менее удовлетворительно. При CSS -позиционировании со держимое разбивается на дескрипторы

, которые затем либо позиционируются по абсолютным координатам, либо располагаются вдоль одной из сторон страницы. После этого элемент управления Content. Place. Holder помещается в дескриптор
. • В следующем примере демонстрируется использование мастер-страниц для созда ния традиционного веб-приложения с верхним и нижним колонтитулами и панелью навигации, которые определены с помощью таблиц.

Мастер-страницы и компоновка таблицами и CSS слайд 2/3 table width=100 tr   td colspan=2 Мастер-страницы и компоновка таблицами и CSS слайд 2/3

My Header
My Footer

Мастер-страницы и компоновка таблицами и CSS слайд 3/3 • Многие профессиональные веб-разработчики предпочитают пользоваться более современнымиМастер-страницы и компоновка таблицами и CSS слайд 3/3 • Многие профессиональные веб-разработчики предпочитают пользоваться более современными технологиями компоновки на основе CSS. Компоновка на основе CSS позволяет писать код разметки, который гораздо легче читать и пересматривать в будущем. • К счастью, применение элемента управления Content. Place. Holder в компоновках на основе CSS столь же просто, как и в компоновках на основе таблиц. Вместо того чтобы помещать объекты Content. Place. Holder в ячейки таблицы, их помещают в от дельные элементы

. После этого таблица стилей применит позиционирование к каждому элементу
с помощью атрибутов position, left, right, top и bottom. • Например, часто встречается дизайн страницы, при котором она делится на три столбца. Для столбцов у краев страницы устанавливается фиксированный размер, а столбец в середине занимает остальное место. • Ниже показан пример таблицы стилей, которая воплощает этот дизайн, создавая у обеих сторон страницы панели шириной по 150 пикселей. . left. Panel { position: absolute; top: 70 px; left: 10 px; width: 150 px; }. right. Panel { position: absolute; top: 70 px; right: 10 px; width: 150 px; }. center. Panel { margin-left: 151 px; margin-right: 151 px; padding-left: 12 px; padding-right: 12 px; } • Теперь страницу можно разделить на колонки с помощью стилей и поместить Content. Place. Holder в соответствующую область. Например, левую панель можно было бы использовать для навигационных элементов управления, правую панель — для рекла мы, а среднюю — для информации, которая предоставляется страницей содержимого:
. . .
. . .

Вложенные мастер-страницы слайд 1/3  • Мастер-страницы можно вкладывать так, чтобы одна мастер-страница использова ла другуюВложенные мастер-страницы слайд 1/3 • Мастер-страницы можно вкладывать так, чтобы одна мастер-страница использова ла другую мастер-страницу. • Например, веб-сайт может содержать два раздела. Для каждого раздела могут понадобиться собственные элементы управления навигацией. Каждому из разделов необходим один и тот же верхний колон титул. В этой ситуации можно создать мастер-страницу верхнего уровня, добавляющую верхний колонтитул. Например: Untitled Page

The Root

Вложенные мастер-страницы слайд 2/3 • После этого можно создать вторую мастер-страницу, которая будет использовать первую мастер-страницуВложенные мастер-страницы слайд 2/3 • После этого можно создать вторую мастер-страницу, которая будет использовать первую мастер-страницу (через атрибут Master. Page. File ). Вторая мастер-страница получит верхний колонтитул от первой мастер-страницы и может добавить элементы управления навигации в панель в левой части окна. Например :

The Second Level

Вложенные мастер-страницы слайд 3/3 • Не исключено, что может понадобиться создать нескольких версий второй мас тер-страницыВложенные мастер-страницы слайд 3/3 • Не исключено, что может понадобиться создать нескольких версий второй мас тер-страницы — по одной для каждого раздела веб-сайта. Эти версии должны были бы получать один и тот же стандартный заголовок. И, наконец, каждая страница содержи мого может использовать одну из мастер-страниц второго уровня для стандартизации своей компоновки: This is the nested content! Уровней вложенности мастер-страниц может быть столько, сколько необходимо. Однако такой может доставить больше хлопот, чем кажется на первый взгляд. Например, иерархию мастер-страниц придется переработать, если впоследствии окажется, что два раздела веб-сайта нуждаются в аналогичных, но слегка отличающихся друг от друга верхних колонтитулах. Поэтому целесообразно применять только один уровень мастер-страниц и копировать несколько общих элементов.

Основы безопасности ASP. NET • Безопасность — важнейшая часть веб-приложений, и она должна приниматься во вниманиеОсновы безопасности ASP. NET • Безопасность — важнейшая часть веб-приложений, и она должна приниматься во внимание с первого этапа процесса разработки. По сути, безопасность — это все, что касается защиты разработанного программного продукта от неавторизованных действий. И для ее обес печения используется несколько механизмов, включая идентификацию пользователей, выдачу или отзыв прав доступа к важным ресурсам, а также защиту информации, хра нящейся на сервере и передающейся по сети. Во всех этих случаях необходима некая фундаментальная платформа, обеспечивающая базовую функциональность безопасно сти. ASP. NET удовлетворяет эту потребность благодаря встроенным средствам, которые можно применять для обеспечения защиты своих приложений. • Платформа безопасности ASP. NET включает классы для аутентификации и авториза ции пользователей, а также для обращения с аутентифицированными пользователями в приложениях. Она также включает высокоуровневую модель для управления пользо вателями и ролями, как программно, так и с помощью инструментов администрирова ния. Более того, платформа. NET Framework сама по себе предоставляет набор базовых классов для обеспечения конфиденциальности и целостности через шифрование и циф ровые подписи.

Понятие потенциальных угроз • Создание безопасной архитектуры и проектного решения требует глубокого пони мания среды приложения.Понятие потенциальных угроз • Создание безопасной архитектуры и проектного решения требует глубокого пони мания среды приложения. Построить безопасное программное обеспечение не удастся, если не известно, кто имеет доступ к приложению и где находятся уязвимые места для атак. Таким образом, наиболее важный фактор для создания безопасной программной архитектуры и проектного решения заключается в хорошем понимании таких факторов среды, как пользователи, точки входа и потенциальные угрозы с точками для атаки. • Именно поэтому моделирование угроз становится все более важным в современном процессе разработки программного обеспечения. Моделирование угроз — это структу рированный способ анализа среды приложения с точки зрения возможных опасностей, классификация угроз и решение относительно приемов их смягчения. При таком подхо де решения относительно технологий безопасности (таких как аутентификация и SSL — шифрование) всегда имеет действительное основание — потенциальную угрозу. • Однако моделирование угроз важно по еще одной причине. Как известно, не все потенциальные угрозы могут быть смягчены применением технологий защиты, такими как аутентификация и авторизация. Другими словами, некоторые из них вооб ще невозможно разрешить технически. Например, банковское онлайновое решение мо жет использовать SSL для защиты трафика веб-сайта. Но как пользователи могут знать, что они действительно используют банковскую страницу, а не хакерский поддельный веб-сайт? Хорошо, единственный способ убедиться в этом — проверить сертификат, ис пользуемый для установки канала SSL. Но пользователи должны быть предупреждены об этом, а потому их каким-либо образом необходимо информировать. Поэтому «техника смягчения» угроз — это не только технологии защиты. Это включает требование того, чтобы все пользователи знали, как проверить сертификат. Моделирование угроз — метод анализа, помогающий выявить обстоятельства вроде этих, а не только факторы техни ческого порядка. Тема моделирования угроз является очень обширной и выходит за рамки данного учебного пособия.

Правила безопасного кодирования • Никогда не доверяйте пользовательскому вводу.  Предполагается, что каждый пользователь является злоумышленником,Правила безопасного кодирования • Никогда не доверяйте пользовательскому вводу. Предполагается, что каждый пользователь является злоумышленником, пока он не докажет обратное. Таким образом, необходимо всегда строго проверять пользовательский ввод. • Никогда не используйте конкатенацию строк для формирования операторов SQL. Необходимо всегда использовать параметризованные операторы, чтобы приложение не было уязвимо для атак внедрением SQL. • Никогда не выводите данные, введенные пользователем, на веб-страницу перед их проверкой и кодированием. Пользователь может ввести некоторые фрагменты кода HTML (например, сценарии), которые инициируют межсайтовую сценарную уязвимость. • Никогда не размещайте важные данные, критичную для бизнеса информацию либо данные, касающиеся внутренних правил безопасности, в скрытых полях веб-страницы. Скрытые поля могут быть легко изменены простым просмотром исходного кода веб-страницы, модификацией и сохранением в файле. • Никогда не сохраняйте важные или критичные для бизнеса данные в состоянии представления. С остояние представления — это просто еще одно скрытое поле на веб-странице, и оно может быть легко декодировано и просмотрено. Шифрование состояния представления помогает защитить информа цию, ценную только в течение ограниченного интервала времени, но следует помнить, что даже шифрованные данные однажды могут быть взломаны, если у зло умышленника есть достаточно времени, ресурсов и мотивации. • Включайте SSL при использовании базовой аутентификации или аутен тификации с помощью форм ASP. NET. • Защищайте cookie-наборы. Всегда защищайте cookie -наборы аутенти фикации при использовании аутентификации с помощью форм и устанавливайте таймауты насколько возможно короткими, и не длиннее, чем это действительно необходимо. • Применяйте SSL. В общем случае, если веб-приложение обрабатывает важные данные, защищайте весь веб-сайт с помощью SSL.

Понятие стража • Хороший способ повысить степень безопасности приложения — размещать компо ненты в таком месте,Понятие стража • Хороший способ повысить степень безопасности приложения — размещать компо ненты в таком месте, которое требует защиты. Концептуальный шаблон стража ( gate keeper ) применяет модель конвейера к организации инфраструктуры безопасности. Эта модель помогает укрепить безопасность. • Модель стражей предполагает, что безопасное приложение всегда имеет больше ме ханизмов защиты, чем это необходимо. Каждый из этих механизмов реализован в виде стража, отвечающего за проверку некоторых условий защиты. Если один из таких стра жей не сработает, то атакующий столкнется со следующим стражем в конвейере. И чем больше стражей имеется в разрабатываемом приложении, тем труднее приходится злоумышлен нику. На самом деле эта модель отвечает ключевому принципу создания безопасных приложений: обеспечивать насколько возможно высокую степень защиты и создавать максимум проблем нарушителям.

Уровни безопасности В основном для большей части веб-приложений основные задачи для реализации защиты (помимо идентифицированных воУровни безопасности В основном для большей части веб-приложений основные задачи для реализации защиты (помимо идентифицированных во время моделирования угроз) всегда одни и те же. • Аутентификация. Прежде всего, необходимо аутентифицировать пользователей. Аутентификация задает вопрос: кто идет? В конечном итоге она определяет, кто работает с вашим приложением на другой стороне. • Авторизация отвечает на вопрос: каков уро вень допуска? • Конфиденциальность. Когда пользователь работает с приложением, необходимо гарантировать, что никто другой не сможет видеть важные данные, которые он обрабатывает. • Целостность. Необходимо гарантировать, что данные, передаваемые между клиентом и сервером, не изменяются в результате неавторизованного вме шательства.

Аутентификация • Аутентификация — процесс определения идентичности пользователя и обеспече ния гарантий этой идентичности.  ПроцессАутентификация • Аутентификация — процесс определения идентичности пользователя и обеспече ния гарантий этой идентичности. Процесс аутентификации аналогичен регистрации участников конференции. Во-первых, участник предъявляет некоторое свидетельство, до казывающее его идентичность (вроде паспорта или водительских прав). Во-вторых, как только идентичность проверена по этой информации, он получает личный значок участника конференции, или маркер , который постоянно носит с собой на протяже нии всей конференции. Любой, кто встретит его на конференции, сможет легко опреде лить его идентичность, взглянув на этот значок, который обычно содержит базовую идентифицирующую информацию, такую как имя и фамилия. Весь этот процесс — пример аутентификации. Как только идентичность установлена, маркер подтверждает ее везде в пределах конкретной области, личность владельца маркера будет известной.

Системы аутентификации В приложениях ASP. NET аутентификация реализуется одной из следующих возмож ных аутентифицирующих систем: Системы аутентификации В приложениях ASP. NET аутентификация реализуется одной из следующих возмож ных аутентифицирующих систем: • аутентификация Windows ; • аутентификация с помощью форм; • Аутентификация при помощи паспорта; • специальный процесс аутентификации. В каждом случае пользователь предъявляет некоторое удостоверение при регистра ции в системе. Идентичность пользователя отслеживается разными способами, в зави симости от типа аутентификации.

Заимствование прав • Заимствование прав ( impersonation ) — это процесс выполнения кода в контексте (илиЗаимствование прав • Заимствование прав ( impersonation ) — это процесс выполнения кода в контексте (или от имени) другого пользователя. По умолчанию код ASP. NET выполняется от име ни фиксированной, специфичной для конкретной машины, пользовательской учетной записи (обычно Network Service в IIS 7. x). Чтобы выполнить код с применением другой идентичности, можно воспользоваться встроенными в ASP. NET ВОЗМОЖНОСТЯМИ заимст вования прав. Можно применить предопределенную пользовательскую учетную запись либо предположить пользовательскую идентичность, если этот пользователь уже был аутентифицирован посредством учетной записи Windows. • Одна из причин, по которым может применяться заимствование, состоит в воз можности использования существующих учетных записей Windows с их привилегиями. Например, рассмотрим приложение, которое извлекает информацию из различ ных файлов, уже имеющих специфические для пользователей или групп наборы прав. Вместо того чтобы кодировать логику авторизации в своем приложении ASP. NET , можно воспользоваться заимствованием, полагаясь на идентичность конечного пользователя. Таким образом, Windows может выполнить авторизацию за пользователя, проверяя привилегии при попытке обратиться к файлу. Можно даже включать заимствование только на крат кий период времени вместо полного запроса.

Авторизация • Авторизация — это процесс определения прав и ограничений, назначенных аутентифицированному пользователю. В зависимости отАвторизация • Авторизация — это процесс определения прав и ограничений, назначенных аутентифицированному пользователю. В зависимости от идентифицирующей информации, доступ к запрашиваемым ресурсам либо открывает ся, либо закрывается. • Пример с конференцией представляет собой случай авторизации на основе ролей — когда авторизация определяется правами группы, к которой принадлежит пользова тель, а не на том, кто он такой. Во многих случая авторизация на основе ро лей предпочтительнее, поскольку ее гораздо легче реализовать.

Конфиденциальность и целостность слайд 1/2 • Конфиденциальность означает обеспечение невидимости данных для неавторизо ванных пользователей воКонфиденциальность и целостность слайд 1/2 • Конфиденциальность означает обеспечение невидимости данных для неавторизо ванных пользователей во время передачи их по сети или сохранении в хранилищах, таких как базы данных. Целостность — это обеспечение невозможности изменения данных никем во время передачи по сети или сохранения в хранилище. И то, и другое основано на шифровании. • Шифрование — процесс кодирования данных, делающий невозможным их чтение другими пользователями. Шифрование в ASP. NET является средством, полностью отде ленным от аутентификации, авторизации и заимствования прав. Его можно применять в комбинации с этими средствами либо самостоятельно.

Конфиденциальность и целостность слайд 2/2 • Как упоминалось ранее, шифровать веб-приложения может требоваться по двум причинам.Конфиденциальность и целостность слайд 2/2 • Как упоминалось ранее, шифровать веб-приложения может требоваться по двум причинам. • Для защиты коммуникаций (передачи данных через сеть). Например, необходимо сделать невозможной кражу номеров кредитных карт, используемых в системе электронной коммерции, по открытым каналам Интернета. Стандартный подход к решению этой проблемы предусматривает применение SSL. Кроме того, SSL реализует цифровые подписи для обеспечения гарантии целостности. SSL не реа лизован ASP. NET , а является средством, предоставляемым IIS. Код веб-страницы (или веб-службы) не зависит от того, используется SSL или нет. • Для защиты постоянной информации (в базе данных или в файле). Например, мо жет понадобиться сохранить номер кредитной карты пользователя в базе данных для будущего использования. Хранение таких данных в виде простого текста в надежде на то, что веб-сервер не будет взломан – не самая удачная идея. Вместо этого следует применять классы шифрования, которые предлагает. NET , и вруч ную шифровать данные перед их сохранением.

Процесс аутентификации 1. Запрос отправляется веб-серверу. Поскольку идентичность пользователя в этот мо мент не известна, емуПроцесс аутентификации 1. Запрос отправляется веб-серверу. Поскольку идентичность пользователя в этот мо мент не известна, ему предлагается зарегистрироваться с использованием специ альной веб-страницы или диалогового окна регистрации браузера. Специфические детали процесса регистрации зависят от типа применяемой аутентификации. 2. Пользователь предоставляет свое удостоверение, которое затем верифицирует ся — либо приложением (в случае аутентификации с помощью форм), либо автоматически средствами IIS (в случае аутентификации Windows ). 3. Если удостоверение пользователя подтверждается, ему предоставляется доступ к веб-странице. Если же оно оценивается как нелегитимное, ему предлагается по вторить попытку регистрации, либо же выполняется переадресация на страницу с сообщением о закрытии доступа.

Процесс аутентификации и авторизации 1. Запрос отправляется веб-серверу. Поскольку идентичность пользователя в этот мо мент неПроцесс аутентификации и авторизации 1. Запрос отправляется веб-серверу. Поскольку идентичность пользователя в этот мо мент не известна, ему предлагается зарегистрироваться с использованием специ альной веб-страницы или диалогового окна регистрации браузера. Специфические детали процесса регистрации зависят от типа применяемой аутентификации. 2. Пользователь предъявляет свое удостоверение, которое проверяется приложени ем. Это стадия аутентификации. 3. Удостоверение или роли аутентифицированного пользователя сравниваются со спи ском разрешенных пользователей и ролей. Если пользователь присутствует в спи ске, ему открывается доступ к ресурсу; в противном случае доступ будет закрыт. 4. Пользователи, которым отказано в доступе, либо приглашаются на повторную ре гистрацию, либо перенаправляются на веб-страницу с сообщением о закрытии доступа.

Понятие SSL • Технология SSL ( Secure Sockets Layer — уровень защищенных сокетов) позволяет шифровать коммуникацииПонятие SSL • Технология SSL ( Secure Sockets Layer — уровень защищенных сокетов) позволяет шифровать коммуникации через HTTP. Протокол SSL поддерживается широким крутом браузеров и гарантирует, что передача информации между клиентом и веб-сервером не может быть расшифрована злоумышленниками. SSL необходим для сокрытия важной информации, такой как номера кредитных карт и конфиденциальные сведения внут реннего характера, но также важен и для аутентификации пользователей. Например, если создается страница регистрации, на которой пользователь отправляет свое имя и пароль, то необходимо применять SSL для шифрования этой информации. В противном случае злоумышленник сможет перехватить удостоверение пользователя и воспользо ваться им для проникновения в систему. • Веб-сервер IIS предоставляет SSL как встроенную, готовую к использованию службу. Поскольку SSL работает под HTTP , его применение не изменяет способа работы с HTTP — запросами. Все шифрование и дешифрацию берут на себя функциональные средства SSL программного обеспечения веб-сервера (в данном случае — IIS ). Единственное от личие состоит в том, что адрес, защищенный SSL , начинается с https : //, а не http : //. Трафик SSL также проходит через другой порт (обычно веб-серверы используют порт 443 для SSL -запросов и порт 80 — для обычных запросов).

Понятие сертификата • Прежде чем пересылать важные данные, клиент должен решить,  можно ли доверять веб-сайту.Понятие сертификата • Прежде чем пересылать важные данные, клиент должен решить, можно ли доверять веб-сайту. Для этой достижения этой цели были спроектированы сертификаты, кото рые позволяют частично верифицировать идентичность пользователя. Сертификаты могут быть установлены на компьютере любого типа, но обычно они находятся на веб-серверах. • Организация приобретает сертификат у известного центра сертификации ( Certificate Authority — СА) и устанавливает его на своем веб-сервере. Клиент доверяет СА и потому готов доверять информации сертификата, подписанного СА. Эта модель работает дос таточно хорошо, т. к. маловероятно, чтобы злоумышленник решился на дополнительные расходы по приобретению и установке фальсифицированного сертификата. Центр сер тификации также сохраняет информацию о каждом зарегистрированном пользовате ле. Однако наличие сертификата никоим образом не гарантирует надежность сервера, безопасность приложения или легитимность бизнеса. В этом смысле область действия сертификатов фундаментально ограничена.

Содержимое сертификата Сам по себе сертификат содержит некоторую идентифицирующую информацию.  Он подписывается защищенным ключом СА,Содержимое сертификата Сам по себе сертификат содержит некоторую идентифицирующую информацию. Он подписывается защищенным ключом СА, что гарантирует его аутентичность и от сутствие модификаций. Промышленный стандартный сертификат, соответствующий x. 509 v 3, включает следующую базовую информацию: • имя, название организации и адрес держателя; • открытый ключ держателя, который будет использоваться для реализации ключа SSL -сеансов для шифрования коммуникаций; • даты проверки сертификата; • серийный номер сертификата. • В дополнение сертификат также может включать специфичную для бизнеса инфор мацию, такую как отрасль промышленности держателя, длительность присутствия его на рынке и т. п. Двумя крупнейшими центрами сертификации являются: • Thawte — http: //www. thawte. com • Veri. Sign — http: //www. verisign. com Если функция проверки идентичности СА не нужна (например, если сертификаты используются только в корпоративной сети), можно создать и пользоваться собствен ными сертификатами, настроив всех клиентов на доверие к ним. Для этого потребуется служба Active Directory и сервер Certificate Server , встроенные в серверную опера ционную систему Windows.

Аутентификация форм • Аутентификация с помощью форм — это система аутентификации общего назна чения, основанная наАутентификация форм • Аутентификация с помощью форм — это система аутентификации общего назна чения, основанная на двух концепциях. Первая из них — страница входа ( login page ), которая может удостоверить действительность пользователей (обычно сверяя комбина цию имени и пароля с базой данных или другим хранилищем данных). Вторая — это механизм предохранения и восстановления контекста безопасности при каждом запро се (обычно с применением cookie -н a б opa ). Таким образом, пользователю понадобится войти только один раз. • ASP. NET включает всю необходимую инфраструкту ру. Посредством аутентификации с помощью форм платформа ASP. NET создает cookie — набор безопасности для зарегистрированных пользователей, обслуживает их и автома тически поддерживает контекст безопасности для последующих запросов. Лучше всего то, что она управляет этим процессом эффективно и в высшей степени устойчиво про тивостоит подделкам.

Использование аутентификации форм • Когда пользователь запрашивает страницу ASP. NET , которая не доступна аноним нымИспользование аутентификации форм • Когда пользователь запрашивает страницу ASP. NET , которая не доступна аноним ным пользователям, исполняющая среда ASP. NET проверяет, имеется ли билет аутен тификации с помощью форм. Если нет, производится автоматическая переадресация на страницу входа. С этого момента начинается работа разработчика. Он должен создать эту страницу входа и внутри нее проверить пользовательское удостоверение. Если пользо ватель успешно прошел проверку, достаточно просто сообщить инфраструктуре ASP. NET об ус пехе операции (вызвав метод класса Forms. Authentication ), после чего исполняющая среда автоматически устанавливает cookie -набор аутентификации (который в действи тельности содержит билет) и переадресует пользователя на запрошенную им страницу. С этим запросом исполняющая среда определяет, что cookie — Ha 6 op аутентификации с билетом имеется в наличии и открывает доступ к странице. Все, что понадобится сделать — это настроить аутентификацию с помощью форм в файле web. config , создать страницу входа и проверить внутри нее удостовере ние пользователя.

Преимущества аутентификации форм • Разработчик получает полный контроль над кодом аутентификации. Поскольку аутентификация с помощью формПреимущества аутентификации форм • Разработчик получает полный контроль над кодом аутентификации. Поскольку аутентификация с помощью форм реализована полностью внутри ASP. NET , разработчик получает полный контроль над выполнением аутентификации. Ему не нужно полагаться ни на какую внешнюю систему, как это имеет место при аутенти фикации Windows. Поведение аутентификации с помощью форм можно настроить под собственные нужды. • Разработчик получает полный контроль над внешним видом формы входа. Разработчик имеет ту же степень контроля над внешним видом аутентификации с помощью форм, что и над ее функциональностью. Другими словами, входную страницу входа можно оформлять как угодно. Однако если нет желания заниматься этим, можно воспользоваться высокоуровневым API -интерфейсом членства ( Membership API ) и эле ментами управления безопасностью ASP. NET. В число этих элементов управления вхо дит готовый к использованию и в высокой степени настраиваемый элемент управления Login. • Она работает с любым браузером. Аутентификация с помощью форм использует в качестве пользовательского интер фейса стандартный HTML , поэтому все браузеры могут его обработать. Поскольку форму входа можно форматировать произвольным образом, аутентификация с помощью форм применяется даже в браузерах, которые не используют HTML — например, в мобильных устройствах. Для этого понадобится определить используемый браузер и предоставить форму в подходящем формате для данного устройства (таком как WML для мобильных телефонов). • Для ввода и отправки пользовательского удостоверения аутентификация с помощью форм использует стандартные формы HTML. Это значит, что для шифрования и безопасной пе редачи этого удостоверения нужно применять SSL. В противном случае при обратной отправке данных на сервер информация передается как простой текст. • Она позволяет выбирать способ хранения информации о пользователях. Гкбкость в хранении информации о пользователях также означает возможность кон троля над созданием и администрированием пользовательских учетных записей, а также присоединения дополнительной информации к этим учетным записям, такой как персо нальные предпочтения по настройке внешнего вида веб-сайта.

Недостатки аутентификации форм • Разработчик должен самостоятельно создавать пользовательский интерфейс для регист рации пользователей. Можно либоНедостатки аутентификации форм • Разработчик должен самостоятельно создавать пользовательский интерфейс для регист рации пользователей. Можно либо целиком создать собственную страницу входа, либо использовать элементы управления безопасностью ASP. NET. • Разработчик должен поддерживать каталог удостоверений пользователей. • Разработчик должен предпринимать дополнительные предосторожности против вмеша тельства в сетевой трафик. • Первые два недостатка можно устранить за счет применения интерфейса Membership API , предоставляющего предварительно разработанные элементы управления и схему хранения удостоверений с готовым решением на основе SQL Server.

Классы аутентификации форм  слайд 1/2 • Наиболее важная часть платформы аутентификации с помощью форм —Классы аутентификации форм слайд 1/2 • Наиболее важная часть платформы аутентификации с помощью форм — Forms. Authentication. Module. Это класс Http. Module , который обнаруживает билеты аутентификации с помощью форм, присутствующие в запросе. Если такой билет не доступен, а пользователь запросил защищенный ресурс, то запрос автоматически пе ренаправляется на страницу входа, указанную в файле web. config , еще до того, как исполняющая среда даже просто коснется этого защищенного ресурса. • Если билет присутствует, модуль автоматически создает контекст безопасности, инициализируя свойство Http. Context. Current. User экземпляром Generic. Principal по умолчанию, который включает экземпляр Forms Identity с именем текущего заре гистрированного пользователя.

Классы аутентификации форм  слайд 2/2 Имя класса Описание Forms. Authentication Основной класс для взаимодействия сКлассы аутентификации форм слайд 2/2 Имя класса Описание Forms. Authentication Основной класс для взаимодействия с инфраструктурой ау тентификации с помощью форм. Он предоставляет базовую информацию о конфигурации и позволяет создавать билет, устанавливать соо ki е-наборы и перенаправлять со стра ницы входа на исходную запрошенную страницу в случае успешной проверки удостоверения пользователя Forms. Authentication. Event. Args инициирует событие Authenticate, которое можно перехватить. Соглашения о передаваемых аргументах события инкапсулируются в эк земпляре этого класса. Содержит базовую информацию об аутентифицированном пользователе Forms. Authentication. Ticket Этот класс предоставляет информацию о пользователе, которая будет зашифрована и помещена в cookie -набор аутентификации Forms I dentity Этот класс реализует интерфейс IIdentity и являет ся специфичным для аутентификации с помощью форм. Ключевым дополнением класса Formsldentity , кро ме членов, необходимых для реализации интерфейса IIdentity , является свойство Ticket , представляющее билет аутентификации. Forms. Authentication. Module Ядро инфраструктуры аутентификации с помощью форм, устанавливающее контекст безопасности и выполняющее при необходимости автоматическое перенаправление на страницу входа

Реализация аутентификации форм 1. Сконфигурировать аутентификацию с помощью форм в файле web. config. 2. Настроить IISРеализация аутентификации форм 1. Сконфигурировать аутентификацию с помощью форм в файле web. config. 2. Настроить IIS для разрешения анонимного доступа к виртуальному каталогу, а также сконфигурировать ASP. NET для ограничения анонимного доступа к веб- приложению. 3. Создать собственную страницу входа, которая будет принимать и проверять имя и пароль пользователя, а затем взаимодействовать с инфраструктурой аутенти фикации с помощью форм для создания билета.

Конфигурирование аутентификации • Разработчик должен надлежащим образом сконфигурировать аутентификацию с помощью форм в файле web. config.Конфигурирование аутентификации • Разработчик должен надлежащим образом сконфигурировать аутентификацию с помощью форм в файле web. config. Выше, что каждый файл web. config включает раздел конфигурации . Аутентификация с помощью форм будет работать, если в этом разделе указать для атрибута mode значение Forms : • Конфигурация ограничена только файлом web. config высшего уровня приложения. Если атрибут mode установлен в Forms , то ASP. NET загружает и активизирует модуль Forms. Authentication. Module , который выполнит большую часть работы. • В основном используются установки по умолчанию для аутентификации с помощью форм, которые жестко закодированы в ис полняющей среде ASP. NET. Чтобы переопределить эти настройки, следует добавить установки в раздел файла machine. config. Эти настройки можно переопределить в приложении, добавив свои установки в дочерний дескриптор этого раздела. 208

Опции аутентификации слайд 1/2 Опция Значение по умолчанию Описание name. ASPXAUTH Имя cookie -набора HTTP дляОпции аутентификации слайд 1/2 Опция Значение по умолчанию Описание name. ASPXAUTH Имя cookie -набора HTTP для использования в аутентификации (по умолчанию . ASPXAUTH). Если множество приложений работают на одном веб-сервере, каждому соо. Ие-набору безопасности каждого приложения должно быть назначено уникальное имя login. Url login. aspx Определяет, на какую страницу должен быть перенаправлен пользователь, чтобы войти в приложение. Это может быть страница в корневой папке приложения или же в каком- то подкаталоге timeout 30 Период времени в минутах действительно сти cookie -набора. ASP. NET обновит cookie — набор приеме запроса, когда истечет половина времени действия cookie -набора. sliding. Expiration false Этот атрибут включает и отключает сколь зящее устаревание cookie -наборов аутен тификации. При включении устаревание cookie -наборов будет сбрасываться испол няющей средой при каждом запросе стра ницы пользователем. Это значит, что каж дый запрос будет продолжать время жизни cookie -набора cookieless Use. Device. Profile Позволяет указать, должна ли исполняю щая среда использовать соо. Ие-наборы для отправки билетов аутентификации с помо щью форм клиенту. Возможные варианты: Auto. Detect, Use. Cookies, Use. Uri и Use. Device. Profile. protection All Позволяет указать уровень безопасности cookie -наборов аутентификации. Опция All шифрует и подписывает аутен- тифицирующие cookie -наборы. Другими возможными значениями являются None , Encryption (только шифрование) и Validation (только подпись)

Опции аутентификации слайд 2/2 require. SSL false Если установлено в true , это свойство дает тотОпции аутентификации слайд 2/2 require. SSL false Если установлено в true , это свойство дает тот эффект, что браузер просто не передает cookie -набор, если SSL не включен на веб сервере. Таким образом, аутентификация с помощью форм работать не будет, если SSL не активизирован на веб-сервере enable. Cross. App. Redirects false Разрешает переадресацию между разными приложениями на сервере при использо вании аутентификации с помощью форм. Конечно, это имеет смысл, только если оба приложения полагаются на одно и то же хранилище удостоверений и используют одинаковый набор пользователей и ролей default. Url Default. aspx Если Forms. Authentication. Module перенаправляет запрос от пользователя на страницу входа, то включает исходную за прошенную страницу при ее вызове. Таким образом, когда страница входа вернет управ ление, модуль сможет использовать этот URL для перенаправления на исходную запро шенную страницу после успешной проверки удостоверения пользователя. domain Указывает домен, для которого соо ki е-набор является допустимым. Переопределение это го свойства полезно, когда необходимо раз решить использование cookie -наборов для других приложений на веб-сервере path / Путь для cookie -наборов, указанный прило жением. Рекомендуется применять значение по умолчанию (/), поскольку это предотвра щает несовпадение регистра символов при пересылке в запросе

Хранение удостоверений в web. config • При использовании аутентификации с помощью форм существует выбор, где храХранение удостоверений в web. config • При использовании аутентификации с помощью форм существует выбор, где хра нить удостоверения пользователей. Их можно хранить в определенном файле или в базе данных; в принципе хранить их можно где угодно, если предусмотрен код для проверки имени и пароля пользователя, вводимых на странице входа, по значениям, находящим ся в хранилище. Проще всего хранить удостоверения пользователей непосредственно в файле web. config , в подэлементе конфигурационного дескриптора :

Закрытие доступа анонимным пользователям • Для использования аутентификации ограничивать доступ к страницам не обязательно. Аутентификацию можноЗакрытие доступа анонимным пользователям • Для использования аутентификации ограничивать доступ к страницам не обязательно. Аутентификацию можно применять только для целей персонализации, так что анонимные пользователи будут видеть те же страницы, что и аутентифицированные пользователи, но в персонализированном виде. Однако для демонстрации функциональности переадресации при аутентификации с помощью форм полезно разработать пример, закрывающий доступ анонимным пользователям. Это заставит ASP. NET перенаправлять анонимных пользователей на страницу входа. • Для этого используем про стую технику запрета доступа всем пользователям, не прошедшим аутентификацию. Для этого необходимо добавить новое правило авторизации к элементу в файле web. config :

Специальная страница входа 213 Специальная страница входа

Событие страницы входа  protected void Login. Action_Click(object sender, Event. Args e) {   Page.Событие страницы входа protected void Login. Action_Click(object sender, Event. Args e) { Page. Validate(); if (!Page. Is. Valid) return; if (this. My. Authenticate(Username. Text, Password. Text)) { Forms. Authentication. Redirect. From. Login. Page(Username. Text, false); } else { Legend. Status. Text = «Invalid username or password!»; } }

Выход пользователя из аутентификации с помощью формы сводится к простому вызову метода Forms. Authentication. Sign. OutВыход пользователя из аутентификации с помощью формы сводится к простому вызову метода Forms. Authentication. Sign. Out (). Можно создать кнопку выхода и добавить в обработчик щелчка на ней следующий код: protected void Sign. Out. Action_Click(object sender, Event. Args e) { Forms. Authentication. Sign. Out(); Forms. Authentication. Redirect. To. Login. Page(); }

Специальное хранилище удостоверений Хранилище удостоверений в web. config подходит толь ко для простейших сценариев. Отказаться отСпециальное хранилище удостоверений Хранилище удостоверений в web. config подходит толь ко для простейших сценариев. Отказаться от использования web. config в качестве хранилища удостоверений можно по нескольким причинам. • Потенциальная нехватка защищенности. Несмотря на то, что пользователи не име ют возможности напрямую запрашивать файл web. config , предпочтение все-таки может быть отдано хранилищу с более эффективной защитой. • Отсутствие поддержки добавления специфичной для пользователя информации. Например, может понадобиться сохранять такую информацию, как адреса, номе ра кредитных карт, персональные предпочтения и т. п. • Низкая производительность при большом количестве пользователей. web. config — это всего лишь файл, и он не поддерживает эффективное кэширование и многопользовательский доступ, присущий базам данных. Более того, после ка ждого изменения файла web. config перезапускается Http. Application , что при водит к утере всех доменов приложений, состояний сеанса и т. д. Восстановление всего этого влияет на производительность. Таким образом, в большинстве приложений рекомендуется применять собственные хра нилища имен и паролей пользователей, и большей частью они будут находиться в ба зах данных вроде SQL Server. ASP. NET предлагает готовую к использованию инфраструктуру, а так же полный набор элементов управления, связанных с безопасностью. Платформа Membership API включает хранилище данных на основе SQL Server , в которое записы ваются пользователи и роли, а также функции для проверки имен и паролей, без необ ходимости знания подробностей устройства лежащей в основе базы данных. Она также включает элементы управления безопасностью, такие как готовый элемент Login , основанный на использовании Membership API.

Членство и Membership API • Аутентификация с помощью форм закладывает важный фунда мент реализации безопасных пользовательскихЧленство и Membership API • Аутентификация с помощью форм закладывает важный фунда мент реализации безопасных пользовательских форм входа для ваших приложе ний ASP. NET. С другой стороны, задачи, которые приходится решать разработчику в процессе создания форм входа и взаимодействия с лежащим в основе хранилищем удостовере ний, почти всегда одни и те же для каждого веб-приложения, и они достаточно утоми тельны. Следует иметь в виду и еще один момент: аутентификация с помощью форм предоставляет инфраструктуру только для аутентификации пользователей. В случае применения собственного хранилища удостоверений придется писать административ ные приложения для управления пользователями, в которых должна быть реализована функциональность добавления пользователей, удаления пользователей, сброса паролей и т. п. Реализация этой функциональности очень похожа во всех веб-приложениях и по тому быстро надоедает. • Для преодоления этой проблемы в ASP. NET 2. 0 было добавлено средство под назва нием Membership API (API-интерфейс членства), которое в ASP. NET 4, по сути, осталось без изменений. Интерфейс Membership API — это платформа, построенная на основе существующей инфраструктуры аутентификации с помощью форм. При использовании Membership API даже не понадобится реализовывать страницы входа или хранилища удостоверений.

Возможности Membership API Платформа Membership API предоставляет полный набор готовых функций управле ния пользователями.  •Возможности Membership API Платформа Membership API предоставляет полный набор готовых функций управле ния пользователями. • Возможность создавать и удалять пользователей. • Возможность переустановки паролей с автоматической отправкой пользователям новых паролей по электронной почте. • Возможность автоматической генерации паролей для пользователей, если поль зователи создаются автоматически в фоновом режиме. • Возможность нахождения пользователей в лежащем в основе хранилище данных, а также извлечения списков пользователей и подробной информации о каждом их них. • Набор предварительно разработанных элементов управления для создания стра ниц входа и регистрации, а также для отображения состояния входа в различ ных представлениях для аутентифицированных и не аутентифицированных пользователей. • Уровень абстракции, который обеспечивает независимость приложений от кон кретного лежащего в основе хранилища данных через классы поставщиков член ства.

Архитектура Membership API 219 Архитектура Membership API

Классы Membership API 220 Компонент Описание Membership Класс Membership  — центральная точка взаи модействия сКлассы Membership API 220 Компонент Описание Membership Класс Membership — центральная точка взаи модействия с Membership API. Он предоставляет ряд методов для управления пользователями, их проверки и переустановки паролей Membership. Create. User. Exception Исключение, генерируемое в случае возникнове ния ошибки при попытке создания пользователя классом Membership. User Представляет отдельного пользователя, записан ного в хранилище данных Membership API. Этот объект содержит всю информацию о пользователе и возвращается несколькими методами класса Membership, например, Get. User() Membership. User. Collection Коллекция пользователей Membership. Например, метод Get. Users класса Membership возвращает экземпляр этой коллекции Membership. Provider Базовый класс, от которого наследуются собст венные классы поставщиков членства, которые аутентифицируют пользователей по специальному хранилищу удостоверений Membership. Provider. Collection Коллекция доступных поставщиков членства на машине для данного веб-приложения Sql. Membership. Provider Реализация класса Membership. Provider, работающая с базами данных SQL Server Active. Directory. Membership. Provider Реализация класса Membership. Provider, работающая со службой Active Directory Active. Directory. Membership. User Класс, который наследует всю функциональность Membership. User и добавляет некоторые специ фичные для Active Directory свойства

Использование Membership API Прежде чем можно будет использовать интерфейс Membership API и элементы управ ления безопасностьюИспользование Membership API Прежде чем можно будет использовать интерфейс Membership API и элементы управ ления безопасностью ASP. NET, потребуется выполнить несколько шагов. – Сконфигурировать аутентификацию с помощью форм в файле web. config обыч ным образом и запретить доступ анонимным пользователям. – Настроить хранилище данных членства. Например, если используется SQL Server , то в базе данных SQL Server придется создать несколько таблиц и хранимых процедур. – Сконфигурировать в файле web. config строку подключения к базе данных и по ставщика членства, который должен использоваться. – Создать пользователей в хранилище данных членства с помощью веб-утилиты конфигурирования ASP. NET либо при помощи собственной страницы админи стрирования, которая может быть реализована в веб-приложении с применением функций Membership API. – Создать страницу входа, которая использует готовый элемент управления Login или класс Membership для проверки введенных удостоверений и аутентификации пользователей. • Все шаги по конфигурированию за исключением настройки поставщика можно выполнить с помощью ASP. NET WAT ( Web Site Administration Tool — инструмент адми нистрирования веб-сайтов), в состав которого входит мастер настройки безопасно сти. Выберите в меню Website (Веб-сайт) пункт ASP. NET Configuration (Конфигурация ASP. NET ) в среде Visual Studio.

Конфигурирование аутентификации форм слайд 1/2 • Интерфейс Membership API основан на аутентификации с помощью форм иКонфигурирование аутентификации форм слайд 1/2 • Интерфейс Membership API основан на аутентификации с помощью форм и предла гается в виде готовой к применению инфраструктуры для управления и аутентифика ции пользователей. Таким образом, в качестве первого шага приложение должно быть сконфигурировано на аутентификацию с помощью форм. Но на этот раз структура ре шения будет немного отличаться. Часто к корневому каталогу приложения открывается доступ для анонимных пользователей, в то время как ограниченные ресурсы сохраня ются в подкаталогах с ограниченным доступом. Эти подкаталоги имеют собственные файлы web. config, которые закрывают доступ анонимным пользователям. Как только кто-то пытается обратиться к ресурсам, расположенным в защищенном каталоге, ис полняющая среда ASP. NET автоматически перенаправляет пользователя на страницу входа.

Конфигурирование аутентификации форм слайд 2/2 • Таким образом, в корневом каталоге веб-приложе ния нужно только сконфигурироватьКонфигурирование аутентификации форм слайд 2/2 • Таким образом, в корневом каталоге веб-приложе ния нужно только сконфигурировать аутентификацию с помощью форм, включив следующий фрагмент: • Эта конфигурация указывает на приме нение аутентификации с помощью форм и открывает анонимный доступ к страницам. В защищенный под каталог должен быть помещен дополнительный файл web. config со следующим содержимым:

Создание хранилища данных • С помощью Membership API необходимо настроить хранилище данных, с которым будет работатьСоздание хранилища данных • С помощью Membership API необходимо настроить хранилище данных, с которым будет работать поставщик членства. При использова нии SQL Server Express Edition в сочетании с ASP. NET класс Sql. Membership. Provider способен создать это хранилище автоматически. Однако в случае применения любой другой версии SQL Server это хранилище должно создаваться вручную. Есть и ряд дру гих причин для того, чтобы не использовать автоматически присоединяемую, основан ную на файлах базу данных. Этими причинами являются производительность и парал лелизм. • Поэтому для рабочих сред рекомендуется ручное создание базы данных членства. В случае Sql. Membership. Provider создание такого хранилища данных означает создание базы данных SQL Server и множества таблиц и хранимых процедур в ней. ASP. NET поставляется с множеством сценариев SQL , которые позволяют вручную создать необходимую базу данных и ее таблицы, необходимые для хранения информации о пользователях и ролях, используемой Membership API. Однако ASP. NET также поставляется с инструментом aspnet _ regsql. exe , который создает таблицы автоматически. В случае специального поставщика потребуется подготовить и настроить источник данных, применяемый этим поставщиком, в соответствии с его документацией. • Инструмент aspnet _ regsql. ехе можно использовать двумя способами: либо через интерфейс мастера, либо из командной строки, указывая специальные переключатели командной строки. В любом случае понадобится запустить инструмент в окне команд ной строки Visual Studio , поскольку оно включает всю необходимую настройку путей к каталогу. NET Framework , содержащему нужные инструменты. Если просто запусти ть его без параметров, то на экране появится интерфейс мастера, который проведет по всему процессу создания базы данных

Сценарии БД 225 Сценарий Описание Install. Common. sql Устанавливает некоторые общие таблицы и хранимые проце дуры,Сценарии БД 225 Сценарий Описание Install. Common. sql Устанавливает некоторые общие таблицы и хранимые проце дуры, необходимые и для Membership. API , и для Roles API. Это включает таблицы для идентификации приложений ASP. NET , которые используют другие средства ASP. NET , такие как Membership API , службу ролей, а также персонализацию Install. Membership. sql Устанавливает таблицы базы данных, хранимые процедуры и триггеры, используемые Membership API. Сюда входят табли цы пользователей, дополнительные свойства пользователей и хранимые процедуры для доступа к этой информации Install. Roles. sql Устанавливает таблицы базы данных и хранимые процедуры, необходимые для ассоциирования пользователей с ролями приложений. Эти роли затем используются для авторизации Install. Personalization. sql Содержит команды DDL для создания любой таблицы и хра нимой процедуры, необходимой для создания персонали зированных портальных приложений с помощью Web Parts. Install. Profile. sql Создает все необходимые таблицы и хранимые процедуры для поддержки пользовательских профилей ASP. NET Install. Sql. State. sql Устанавливает таблицы для постоянных состояний сеансов в базе данных TEMP на сервере SQL Server. Это значит, что каж дый раз, когда служба SQL Server останавливается, состояние сеанса теряется Install. Persist. Sql. State. sql Устанавливает таблицы для постоянных состояний сеансов в от дельной базе данных ASPState. Это значит, что состояние се ансов сохраняется даже после перезапуска службы SQL Server

Конфигурирование соединения и поставщика членства • В случае применения хранилища SQL Server (или другого хранилища наКонфигурирование соединения и поставщика членства • В случае применения хранилища SQL Server (или другого хранилища на основе базы данных) первым делом должна быть настроена строка соединения. Это можно сделать в разделе файла web. config. : • После настройки строки соединения с хранилищем данных о членстве понадобится сконфигурировать поставщик членства для приложения. Для этого необходимо доба вить в файл web. config раздел (если его еще там нет) непосредствен но внутри раздела , как показано ниже (опять-таки, в корневом файле web . config , как описано в начале этого раздела — эмпирическое правило заключается в том, что эти конфигурации поставщика помещаются в web. config , поскольку затра гивают все веб-приложение). • Внутри раздела можно добавить множество поставщиков как до черние элементы раздела . В предыдущем коде показана допустимая конфигурация для поставщика Sql. Membership. Provider. Важно не забыть об атри буте default. Provide г. Этот атрибут указывает поставщика членства, который будет использоваться в коде.

Свойства Sql. Membership. Provider слайд 1/ 3 227 Свойство Описание Name Указывает имя поставщика членства. МожноСвойства Sql. Membership. Provider слайд 1/ 3 227 Свойство Описание Name Указывает имя поставщика членства. Можно выбрать любое имя по своему желанию. Имя может быть ис пользовано позже для ссылки на поставщика, когда производится программное обращение к списку скон фигурированных поставщиков членства. application. Name Строковое значение, указывающее имя приложения, для которого поставщик членства управляет пользо вателями и их настройками. Это свойство позволяет использовать одну базу данных членства для множе ства приложений. description Необязательное описание поставщика членства password. Format Получает или устанавливает формат, в котором будут сохраняться пароли в хранилище удостоверений. Допустимые варианты: Clear — для хранения па ролей в виде простого текста, Encrypted — для шифрования паролей в хранилище (для шифрования применяется локально настроенный ключ машины) и Hash — для хеширования паролей в хранилище ин формации о членстве min. Required. Non. Alphanumeric. Characters Указывает количество не алфавитно-цифровых сим волов, которые должен иметь пароль. min. Required. Password. Length Позволяет задать минимальную длину паролей для пользователей приложения. Это также важное свой ство, определяющее надежность пароля

Свойства Sql. Membership. Provider слайд 2 / 3 228 password. Strength. Regular. Expression Если перечисленных вышеСвойства Sql. Membership. Provider слайд 2 / 3 228 password. Strength. Regular. Expression Если перечисленных выше свойств не достаточно для определения требований к надежности пароля, мож но использовать регулярное выражение для указания формата допустимых паролей. Благодаря этой опции, можно гибко определять критерии формата паролей enable. Password. Reset Платформа Membership API имеет функциональность для переустановки пользовательских паролей и не обязательной отправки электронной почты, если для приложения сконфигурирован SMTP -сервер enable. Password. Retrieval Когда установлено в true, можно извлекать пароль из объекта Membership. User, вызывая его метод Get. Password. Работает только то гда, когда пароль не хеширован max. Invalid. Password. Attempts Задает количество неудачных попыток входа, прежде чем пользователь будет заблокирован. Значение по умолчанию равно 5. password. Attempt. Window Задает количество минут, в течение которых могут предприниматься попытки ввода неправильных паро лей или длиться диалог из вопросов-ответов, связан ных с забытыми паролями, прежде чем пользователю будет полностью заблокирован доступ к приложению, так что только администратор сможет вновь активи зировать учетную запись. Значение по умолчанию составляет 10 минут.

Свойства Sql. Membership. Provider слайд 3 / 3 229 requires. Question. And. Answer Указывает, нужно лиСвойства Sql. Membership. Provider слайд 3 / 3 229 requires. Question. And. Answer Указывает, нужно ли в данном приложении использо вать вопрос и ответ для восстановления забытого па роля. При правильном ответе на вопрос пользователь имеет возможность получить новый автоматически сгенерированный пароль по электронной почте requires. Unique. Email Указывает, должны ли адреса электронной почты быть уникальными для каждого пользователя в лежащем в основе хранилище данных о членстве

Создание аутентифицируемых пользователей 230 Создание аутентифицируемых пользователей

Аутентификация с помощью Membership API protected void Login. Action_Click(object sender, Event. Args e) { if (Membership.Аутентификация с помощью Membership API protected void Login. Action_Click(object sender, Event. Args e) { if (Membership. Validate. User(Username. Text, Password. Text)) { Forms. Authentication. Redirect. From. Login. Page(Username. Text, false); } else { // Неверное имя пользователя или пароль. Legend. Status. Text = «Invalid user name or password»; } }

Использование элементов управления безопасностью • Теперь, когда подготовлены поставщик и хранилище для информации о пользова телях,Использование элементов управления безопасностью • Теперь, когда подготовлены поставщик и хранилище для информации о пользова телях, можно приступать к построению пользовательского интерфейса для аутентифи кации, входа пользователей и предоставлении им возможности переустановки паролей. Все это потребует создания ряда страниц ASP. NET (таких как login. aspx , которая не обходима для рассмотренной выше аутентификации с помощью форм). • Платформа ASP. NET поставляется с множеством элементов управления, которые упрощают построение, например, страниц входа, а также связанных с ними страниц (например, для первоначальной регистрации пользователей, переустановки паролей с использованием комбинаций вопросов и ответов и т. д. ).

Элементы управления безопасностью слайд 1/2 Элемент управления Описание Login Составной элемент управления, который решает наиболее общуюЭлементы управления безопасностью слайд 1/2 Элемент управления Описание Login Составной элемент управления, который решает наиболее общую задачу в приложениях, основанных на аутентификации с помощью форм — ото бражает текстовые поля для ввода имени пользователя и пароля, а также кнопку входа. Вдобавок, если события обрабатываются посредством специальных процедур событий, он автоматически проверяет пользова теля через поставщик членства по умолчанию. Этот элемент обычно по мещается на странице login. aspx, используемой для аутентификации с помощью форм. Тем не менее, его можно разместить на любой страни це, где нужно разрешить пользователям входить на веб-сайт Login. Status Простой элемент управления, проверяющий состояние аутентификации текущего сеанса. Если пользователь не аутентифицирован, он предлагает кнопку входа для перенаправления на сконфигурированную страницу вхо да. В противном случае отображает кнопку выхода, обеспечивая возмож ность выхода из приложения. Этот элемент инкапсулирует поведение, ко торое обычно должно быть доступно на всех страницах. Поэтому его очень удобно размещать на мастер-странице. Тем не менее, его можно исполь зовать на любой странице, где должно отображаться состояние входа с прямыми ссылками на страницу входа или выхода пользователей

Элементы управления безопасностью слайд 2/2 Login. View Действительно мощный элемент управления, который дает возможность отображать разныеЭлементы управления безопасностью слайд 2/2 Login. View Действительно мощный элемент управления, который дает возможность отображать разные наборы элементов управления для аутентифицирован ных и неаутентифицированных пользователей. Кроме того, он позволяет отображать разные элементы управления для пользователей с отличающимися ролями. Этот элемент обычно помещает ся на страницу с содержимым, поскольку отображает содержимое веб-сай та в зависимости от параллельно работающих со страницей пользователей Password. Recovery Позволяет пользователю извлечь пароль, если при регистрации был указан его адрес электронной почты. Запрашивает имя пользователя, затем автоматически отображает интерфейс с контрольным вопросом и ожидает ответа. Если ответ правильный, использует Membership API для отправки пароля пользователю. Change. Password Составной элемент управления, который запрашивает старый пароль пользователя и позволяет ему ввести и подтвердить новый пароль. Опять-таки, этот элемент управления обычно размещается на отдельной странице ASP. NET , предназначенной для смены пароля пользователем Create. User. Wizard Включает полный мастер, который проводит пользователя (или админи стратора) через процесс создания нового пользователя. Этот элемент обычно помещается на отдельную страницу ASP NET веб-сайта, которая позволяет пользователю самостоятельно регистрироваться на веб-сайте

Элемент управления Login 235 Элемент управления Login

Локализация проектов. Ресурсы проекта • Создание многоязычных web-сайтов имеет особенно большое значение в неанглоговорящих странах. ИзначальноЛокализация проектов. Ресурсы проекта • Создание многоязычных web-сайтов имеет особенно большое значение в неанглоговорящих странах. Изначально ASP. NET настроена на английский язык, причем на его американскую разновидность. Но платформа. NET поддерживает концепцию информации о культуре, а строки хранятся в формате Unicode, что позволяет писать их на множестве языков. Глобализация — это создание приложений, способных работать в разных культурных средах. Локализация — создание ресурсов для работы с конкретной культурой. Ресурсы должны быть отделены от программного кода. • Классы для работы с информацией о культурах заключены в пространстве имен Globalization. Класс Culture. Info содержит свойство Current. Culture, которое позволяет узнать все данные о текущей культуре — форматы отображения, календарь, кодовую страницу и другие. • Файлы ресурса содержат строки, которые могут быть написаны на разных языках для различных культурных сред. Формат этих файлов — XML, следующий специальной схеме Microsoft Res. X. Файлы. resx автоматически включаются в сборку для использования на страницах. Кроме строк, файлы ресурса могут содержать картинки и другие файлы. Их можно использовать для создания многоязычных приложений.

Папки ресурсов • В папке App_Global. Resources хранятся файлы ресурсов , названия которых соответствуют культурной схеме.Папки ресурсов • В папке App_Global. Resources хранятся файлы ресурсов , названия которых соответствуют культурной схеме. Например, ресурс для русской культуры называется Resource. ru-ru. resx, для немецкой — Resource. de — DE. resx. Ресурс с нейтральной культурой называется просто Resource. resx. Ресурсы доступны для всех страниц и пользовательских элементов управления. Промежуточное расширение следует стандарту. NET на региональные стандарты — состоит из главного и вспомогательного тегов. • В папке \App_Local. Resources хранятся локальные файлы ресурсов для конкретных страниц. Название файла ресурса формируется из имени страницы, кода культурной среды и расширения resx. Например, default. aspx. fi. resx — это файл ресурса на финском языке для страницы default. aspx. • Протокол HTTP позволяет браузерам посылать список предпочитаемых языков на сервер. В браузере можно настроить предпочтительные языки web-страниц. ASP. NET позволяет автоматически модифицировать культуру страницы в зависимости от первого языка в списке. Для этого атрибуту Culture директивы Page нужно присвоить значение auto. Так же обстоит дело у атрибута UICulture — он определяет культуру пользовательского интерфейса. Менеджер ресурсов ищет строки и другие ресурсы в файле с тем расширением, которое определено в атрибуте UICulture. Формат отображения дат, чисел и денежной информации определяется атрибутом Culture. •

Пример глобализации • Загрузить строку из файла ресурсов можно по-разному. Первый способ — использовать класс Resource.Пример глобализации • Загрузить строку из файла ресурсов можно по-разному. Первый способ — использовать класс Resource. Предварительно в App_Global Resources нужно создать файлы Resource. resx и Resource. ru-RU. resx со строками. Name Value Answer Good morning, Page. Title Sample Globalization Page Question What is your name? Name Value Answer Привет Page. Title Пример глобализации ASP. NET Question Как Вас зовут?

Пример глобализации 2 html xmlns=http: //www. w 3. org/1999/xhtml  head id=Head 1 runat=server title/title /headПример глобализации 2

public partial class Web. Form 3 : System. Web. UI. Page { protected void Page_Load(object sender, Event. Args e) { Page. Title = Resources. Resource. Page. Title; } protected void Button 1_Click(object sender, System. Event. Args e) { Localize 1. Text = Resources. Resource. Answer + «, » + Textbox 1. Text; } }

Глобализация • Второй способ позволяет статически выводить информацию из локальных файлов ресурсов:  • @ PageГлобализация • Второй способ позволяет статически выводить информацию из локальных файлов ресурсов: • •

Web – службы ( web- сервисы) • В процессе эволюции Интернета появилась необходимость в создании распределенныхWeb – службы ( web- сервисы) • В процессе эволюции Интернета появилась необходимость в создании распределенных приложений. Приложения, установленные на компьютере, обычно используют библиотеки, размещенные на нем. Одну библиотеку могут использовать несколько программ. • Предприятия на своих страницах предоставляют разнообразную информацию. Например, со своего сайта компания «Форд» публикует информацию о моделях и ценах. Дилер этой компании хотел бы иметь эту информацию и на своем сайте. Web-служба позволяет сайту-потребителю получать информацию с сайта-поставщика. Сайт-потребитель показывает эту информацию на своих страницах. Код для генерации этой информации написан один раз, но может использоваться многими потребителями. Данные представлены в простом текстовом виде, поэтому ими можно пользоваться независимо от платформы.

Web - сервисы • Web-сервисы широко используются и в Desktop, и в Интернет-приложениях. Они сами поWeb — сервисы • Web-сервисы широко используются и в Desktop, и в Интернет-приложениях. Они сами по себе являются не приложениями, а источниками данных для приложений. У них отсутствует пользовательский интерфейс. Web-сервисами необязательно пользоваться через сеть — они могут быть частью проекта, в котором используются. • Web-сервисы — это функциональность и данные, предоставляемые для использования внешними приложениями, которые работают с сервисами посредством стандартных протоколов и форматов данных. Web-сервисы полностью независимы от языка и платформы реализации. Технология Web-сервисов является краеугольным камнем программной модели Microsoft. NET.

SOAP • Для взаимодействия с web-сервисами применяется протокол SOAP ,  основанный на XML. Можно былоSOAP • Для взаимодействия с web-сервисами применяется протокол SOAP , основанный на XML. Можно было бы использовать просто XML, но это слишком свободный формат, в нем каждый документ фактически создает свой язык. SOAP — это соглашение о формате XML-документа, о наличии в нем определенных элементов и пространств имен. • SOAP позволяет публиковать и потреблять сложные структуры данных, например Data. Set. В то же самое время его легко изучить. Текущая версия SOAP — 1. 2. • SOAP — это Простой Протокол Обмена Данными (Simple Object Access Protocol). SOAP создан для того, чтобы облегчать взаимодействие приложениям через HTTP. Это особый независимый от платформы формат обмена сообщениями через Интернет. Сообщение SOAP — это обычный XML-документ. Стандарт SOAP разрабатывает консорциум W 3 C. • SOAP -сообщение состоит из конверта (envelope), заголовка (header) и тела (body). Элементы body и envelope должны присутствовать всегда, а header необязателен. Элемент envelope — корневой. Элемент header может содержать специфичную для данного приложения информацию. В документе, сгенерированном web-сервисом, может присутствовать элемент ault, который описывает ошибку работы. POST /Web. Site 5/Web. Service. asmx HTTP/1. 1 Host: localhost. Content-Type: application/soap+xml; charset=utf-8 Content-Length: length

Использование Web- службы • Сайт http: //www. webservicelist. com/  — каталог различных сервисов.  •Использование Web- службы • Сайт http: //www. webservicelist. com/ — каталог различных сервисов. • Чтобы получить информацию от web-службы , нужно только послать HTTP-запрос, в теле которого находится SOAP -сообщение.

Пример запроса – погода в Москве Запрос к службе http: //www. webservicex. net/globalweather. asmx на получениеПример запроса – погода в Москве Запрос к службе http: //www. webservicex. net/globalweather. asmx на получение прогноза погоды в Москве выглядит так: POST /globalweather. asmx HTTP/1. 1 Host: www. webservicex. net Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: «http: //www. webservice. X. NET/Get. Weather» Moscow Russian

Ответ сервиса ? xml version=1. 0 encoding=utf-8 ?   string xmlns=http: //www. webservice. X. NETОтвет сервиса Moscow / Vnukovo , Russia (UUWW) 55 -39 N 037 -16 E Aug 07, 2006 — 04: 30 AM EDT / 2006. 08. 07 0830 UTC from the E (080 degrees) at 11 MPH (10 KT): 0 greater than 7 mile(s): 0 overcast 66 F (19 C) 55 F (13 C) 68% 29. 85 in. Hg (1011 h. Pa) Sccess

Добавление в проект ссылки на Web- сервис 247 Добавление в проект ссылки на Web- сервис

Код для работы с Web - сервисом  protected void Button 1_Click(object sender, System. Event. ArgsКод для работы с Web — сервисом protected void Button 1_Click(object sender, System. Event. Args e) { Web. Application 3. net. webservicex. www. Global. Weather w 1= new Global. Weather(); string xmlstring = w 1. Get. Weather(«Moscow», «Russia»); Xml. Docment doc = new Xml. Document(); // загрузка ответа в документ doc. Load. Xml(xmlstring); // doc. Child. Nodes. Item(0) — это XML- заголовок // doc. Child. Nodes. Item(1) — тело Xml. Node child = doc. Child. Nodes. Item(1); Xml. Element el = child[«Temperature»]; Textbox 1. Text += el. Inner. Text; }

Создание Web- службы 249 Создание Web- службы

Работа с XML • Аббревиатура XML расшифровывается как Extensible Markup Language, в переводе расширяемый язык разметки.Работа с XML • Аббревиатура XML расшифровывается как Extensible Markup Language, в переводе «расширяемый язык разметки». Как и язык HTML, он является подмножеством SGML (Standard General Markup Language). • XML — это универсальный, независящий от платформы стандарт описания информации, который можно использовать для представления иерархических данных и унификации передаваемой информации. Без его знания невозможно понимание SOAP и, следовательно, web-сервисов. XML стал де-факто стандартом передачи данных в сети Интернет. Стандарт XML и связанных с ним форматов определяется консорциумом W 3 C (World Wide Web Consortium). • XML создан для описания данных и фокусируется на том, что именно они из себя представляют. HTML создан для демонстрации данных и фокусируется на том, как данные выглядят. Теги XML не предопределены создателями языка, в отличие от тегов HTML. Каждый автор документа сам определяет собственные теги. • Стандарт требует, чтобы программа, которая обрабатывает XML-документ, остановливала работу, когда обнаружит ошибку. А если браузер обнаружит непонятный тег в HTML или отсутствие закрывающего тега, он это просто игнорирует.

 • В начале XML-документа обязательно появляется его декларация, или пролог. В нем указывается версия стандарта • В начале XML-документа обязательно появляется его декларация, или пролог. В нем указывается версия стандарта XML , которому он соответствует: • • Декларация не является частью XML-документа и не имеет закрывающего тега. В тексте XML-файла могут находиться комментарии в стиле HTML — . • XML-документ может иметь только один корневой элемент. В него могут быть вложены другие узлы, а в них, в свою очередь, — другие. Каждому открывающему тегу XML должен соответствовать закрывающий тег. После завершающего тега корневого элемента не может быть других тегов. Теги XML чувствительны к регистру (case-sensitive). Теги должны быть целиком вложены друг в друга. поэтому код, допустимый в HTML • Какой-то текст является ошибкой в XML. • У тегов могут быть атрибуты. Значения атрибутов должны быть заключены в кавычки. Порядок атрибутов значения не имеет. Между открывающим и закрывающим тегами может находиться текст. В XML сохраняются все пробелы, находящиеся в тексте. Если текста нет, можно применить сокращенную форму записи. Пример тега XML : • • Это краткая форма тега • • Существует атрибут xmlns, который определяет пространство имен. Значением его может быть любое уникальное имя. Существует договоренность использовать URL, так как они уникальны. Пространства имен имеют смысл, аналогичный их применению в. NET Framework — чтобы не смешивать одинаковые имена, используемые разными разработчиками. Название пространства имен отделяется от имени двоеточием. • XML-файлы представляют иерархическую информацию, которую можно представить в виде дерева с одним корнем. • Документы XML , удовлетворяющие всем требованиям синтаксиса, называют правильными (well-formed). Для описания данных XML использует DTD (Document Type Definition) — определение типа документа. Если файл соответствует DTD, он считается действительным (valid).

Ad. Rotator • Элемент управления Ad. Rotator позволяет показывать рекламные баннеры и автоматически заменять их наAd. Rotator • Элемент управления Ad. Rotator позволяет показывать рекламные баннеры и автоматически заменять их на другие. Сами баннеры описаны в файле XML или в другом источнике данных. Реклама обновляется каждый раз при обновлении страницы. В свойстве Advertisment. File задается имя XML-файла. • Скелет XML- файла таков : • • • • Внутри узла Advertisements располагаются узлы • • У этих узлов имеются 5 атрибутов, все они необязательны. Image. Url Картинка, которая будет демонстрироваться при выборе данного объявления Navigate. Url Адрес, по которому будет совершен переход при щелчке на картинку Alternate. Text Альтернативный текст, если показ изображений выключен Impressions Все значения Impressions суммируются. Вероятность показа рекламы равна значению Impressions, деленному на эту сумму Keyword Ключевое слово-категория рекламы, позволяет фильтровать объявления

? xml version=1. 0 encoding=utf-8 ?  Advertisements xmlns=http: //schemas. microsoft. com/Asp. Net/Ad. Rotator-Schedule-File  Ad fixed. gif http: //www. im. am Бесплатный хостинг 40 хостинг logo 2. jpg http: //www. nv. am Газета » Новое время » 50 новости summer. jpg http: //www. utro. ru Певицу Жасмин избил муж ! 100 желтые новости

 • asp: Ad. Rotator ID=Ad. Rotator 1 runat=server   Advertisement. File=ads. xml Height=164 px • • Если установлено свойство Keyword, то элемент управления показывает только ту рекламу, которая соответствует его содержанию. • В предыдущих версиях ASP. NET можно было работать только с файлами XML. Теперь можно использовать любой источник данных, связавшись с источником данных. В таком случае необходимо указать как минимум 3 поля источника в свойствах Image. Url. Field, Navigate. Url. Field и Alternate. Text. Field: •

Файлы определения схемы документа • Согласно современному стандарту, валидный документ должен соответствовать связанному с ним файлуФайлы определения схемы документа • Согласно современному стандарту, валидный документ должен соответствовать связанному с ним файлу XSD (XML Schema Definition) — файлу определения схемы XML , который определяет конкретный язык, то есть описывает, какие элементы и типы могут появляться в документе. Схемы XSD призваны заменить DTD (Document Type Definition), разница между ними заключается в том, что файлы XSD сами тоже используют синтаксис XML. Схемы XSD позволяют определить, какие теги разрешены, обязательны они или нет, могут ли повторяться в документе и так далее. Таким образом, XML описывает данные, а XSD — структуру этих данных, или метаданные. В терминах программирования, XSD — описание типов, в то время как в XML-файле описаны объекты этих типов. • http: //www. w 3. org/standards/techs/xmlschema#w 3 c_all

 • Файл описания схемы начинается с описания префикса пространства имен, который включается затем во все • Файл описания схемы начинается с описания префикса пространства имен, который включается затем во все элементы этого файла. Адрес http: //tempuri. org предназначается для задания URI для пространств имен ASP. NET: • • •

Декларирование элементов и атрибутов • xs: element name=Author type=xs: string default= Пушкин  min. Occurs=1 max.Декларирование элементов и атрибутов • • Например, это определение задает, что элемент «Author» строкового типа, должен появляться один и только один и раз, и если он не указан, то принимает значение «Пушкин». • • Параметр max. Occurs=»unbounded» указывает, что элемент может встречаться любое количество раз. • Параметр ref позволяет ссылаться на уже описанный в данном файле глобальный элемент или атрибут, чтобы избежать повторного описания одних и тех же элементов

Определение сложных типов • В XSD есть предопределенные типы — примерно такие же, как в. NET.Определение сложных типов • В XSD есть предопределенные типы — примерно такие же, как в. NET. Во время работы приложения они преобразуются в типы. NET. На их основании можно строить сложные типы, похожие на структуры языков программирования. Сложный тип состоит из последовательности описаний элементов. Определим сложный тип: • Тег определяет, что элементы в данном типе должны появляться в заданном порядке. Если бы использовался тег , то порядок появления элементов мог бы быть любым. • Тег похож на структуру с вариантами. Он определяет, что в элементе данного типа должен быть только один из вложенных элементов:

Определение простых типов • Простые типы тоже строятся на основе стандартных типов, накладывая разные ограничения. ТипыОпределение простых типов • Простые типы тоже строятся на основе стандартных типов, накладывая разные ограничения. Типы могут быть глобальными или вложенными в определение элементов. • Глобальный тип можно использовать в определении элементов: • • В следующем примере определен простой тип, вложенный в определение элемента My. Value: • Значениями этого типа могут быть целые положительные числа от 1 до 10. • Простой тип может быть перечислением:

Добавление новых атрибутов и групп атрибутов, аннотаций • xs: attribute name=Title type=xs: string  use=required/ •Добавление новых атрибутов и групп атрибутов, аннотаций • • Аннотации позволяют вставлять описание существующих элементов — таким образом, в файл добавляется документация: • • • Цитаты разных авторов • • предназначается для читателей файла, а — для обрабатывающих файл программ.

XMLReader • С помощью класса Xml. Reader можно быстрее, чем другими методами, получить данные из XML-документов.XMLReader • С помощью класса Xml. Reader можно быстрее, чем другими методами, получить данные из XML-документов. • Xml. Reader обеспечивает последовательный доступ только для чтения к потоку XML-данных. Класс Xml. Reader согласуется с рекомендациями консорциума W 3 C по языку XML 1. 0 и по пространствам имен в XML. • Текущий узел ссылается на узел, в котором расположено средство чтения. Средство чтения продвигается с помощью любого из методов чтения, свойства соответствуют значению текущего узла.

 • Xml. Reader — это абстрактный класс. Чтобы начать чтение, в статический метод Create передается • Xml. Reader — это абстрактный класс. Чтобы начать чтение, в статический метод Create передается объект класса Xml. Reader. Settings. Эта функция подсчитывает число узлов в документе: using System. Xml; using System. IO; private int Count. Nodes(string xml. File) { int Nodes. Count=0; Xml. Reader. Settings settings = new Xml. Reader. Settings(); settings. Ignore. Whitespace = true; settings. Ignore. Comments = true; using (Xml. Reader reader = Xml. Reader. Create(xml. File, settings)) { while (reader. Read()) { if (reader. Node. Type == Xml. Node. Type. Element) { Nodes. Count++; } } return Nodes. Count; }

XPath. Docment • Класс обеспечивает чтение и хранение в памяти XML-документов для трансформаций с помощью XSL.XPath. Docment • Класс обеспечивает чтение и хранение в памяти XML-документов для трансформаций с помощью XSL. По документу можно перемещаться в любом направлении и получать произвольный доступ к любому элементу, используя выражения XPath. • Возьмем XML-документ «Quotes. xml» и файл трансформации XSL «Quotes. xsl». В выходной поток страницы будет направлен результат преобразования XML -документа:

Элемент управления XML • Элемент управления XML предоставляет способ преобразовать XML-документ, используя таблицу стилей XSL. СвойствоЭлемент управления XML • Элемент управления XML предоставляет способ преобразовать XML-документ, используя таблицу стилей XSL. Свойство Docment. Source позволяют задать XML-файл, в котором находятся данные, а Transform. Source — файл трансформации XSLT. • В предыдущем примере того же результата можно достичь, если поставить на странице элемент управления XML : • •

XMLData. Source • Элемент-источник данных XMLData. Source обеспечивает простой способ подключения XML-документов как источников данных кXMLData. Source • Элемент-источник данных XMLData. Source обеспечивает простой способ подключения XML-документов как источников данных к элементам, отображающим информацию. Также можно задать запрос XPath для того, чтобы отфильтровать данные. Как и Sql. Data. Source, он позволяет редактировать, удалять, добавлять записи данных. Для этого нужно получить доступ к находящемуся в нем объекту Xml. Data. Document с помощью вызова метода Get. Xml. Document. После редактирования документ сохраняется с помощью метода Save. • В отличие от табличных данных в СУБД, данные в XML-файлах иерархичны, поэтому XMLData. Source удобно привязывать к иерархичным элементам управления, например, Menu.

Элемент управления File. Upload • Формы HTML позволяют загружать пользовательские файлы на сервер. Для этого нужноЭлемент управления File. Upload • Формы HTML позволяют загружать пользовательские файлы на сервер. Для этого нужно установить атрибут enctype как «multipart/form-data» и в нем должен находиться элемент • . • Элемент управления File. Upload облегчает эту работу. Нужно вставить его в форму, а enctype установится автоматически. Элемент состоит из строки ввода и кнопки с надписью Browse. • Процесс загрузки начинается после подачи формы на сервер, обычно для этого вставляют еще одну кнопку:

 • После того как файл загружен,  File. Upload позволяет узнать его свойства. Файл находится • После того как файл загружен, File. Upload позволяет узнать его свойства. Файл находится в кэше сервера, пока не будет сохранен на диск методом Save. As: protected void Upload. Button_Click(object sender, Event. Args e) { if (this. File. Upload 1. Has. File) { try { File. Upload 1. Save. As(«c: \\Uploads\\» + File. Upload 1. File. Name); Message. Text = » Имя файла : » + File. Upload 1. Posted. File. Name + » » + File. Upload 1. Posted. File. Content. Length + » кб » + «Content type: » + File. Upload 1. Posted. File. Content. Type; } catch (Exception ex) { Message. Text = » Ошибка : » + ex. Message. To. String(); } } Процесс сохранения может вызвать исключения, поэтому он заключен в блок try-catch.

Использование Java. Script • Страница, отображающая время на стороне клиента: body onload=javascript: document. forms[0] ['Client. Time'].Использование Java. Script • Страница, отображающая время на стороне клиента:

protected void Page_Load(object sender, Event. Args e) { string my. Script = @»function Show() { document. forms[0][‘Client. Time’]. value=Date(); }»; if (!Page. Client. Script. Is. Client. Script. Block. Registered(«My. Script»)) Page. Client. Script. Register. Client. Script. Block(this. Get. Type(), «My. Script», my. Script, true); }

Register. Startup. Script • Метод Register. Startup. Script похож на предыдущий, и отличие заключается в том,Register. Startup. Script • Метод Register. Startup. Script похож на предыдущий, и отличие заключается в том, что скрипт выполняется при загрузке страницы, но после отображения всех элементов. Сам скрипт находится в конце описания формы. Парсер Java. Script не может обратиться к элементам, если они не описаны до функции. Если написать скрипт, которые читает данные из формы, то попытка отображения страницы вызовет ошибку времени выполнения: string my. Script 1 = @»alert(document. forms[0][‘Client. Time’]. value); «; Page. Client. Script. Register. Client. Script. Block(this. Get. Type(), «Alert. Script», my. Script 1, true); • Значение поля в момент отображения скрипта еще не определено. Поэтому нужно вызывать Register. Startup. Script: string my. Script 1 = @»function Message() {alert(document. forms[0] [‘Client. Time’]. value); }»; Page. Client. Script. Register. Startup. Script(this. Get. Type(), «Alert. Script», my. Script 1, true);

Register. Client. Script. Include • Метод Register. Client. Script. Include позволяет подключить внешний файл Java. Script.Register. Client. Script. Include • Метод Register. Client. Script. Include позволяет подключить внешний файл Java. Script. Например , Page. Client. Script. Register. Client. Script. Include(«m y. Key», «Extern. Java. Script. Code. js»); • создает на выданной странице код

Использование клиентских событий В примерах использовались не серверные командные кнопки, а элементы управления HTML.  ПричинаИспользование клиентских событий В примерах использовались не серверные командные кнопки, а элементы управления HTML. Причина заключается в том, что нажатие на командную кнопку отправляет форму на сервер. Событие On. Click выполняется на сервере. А в Java. Script существует свой On. Click. Вызвать его можно при помощи свойства Attributes, которое позволяет обратиться к атрибутам элемента, даже тем, которые не соответствуют встроенным свойствам: protected void Page_Load(object sender, Event. Args e) { Button 2. Attributes. Add(«onclick», «Show(); return false»); } return false нужно писать обязательно, иначе форма будет отправлена на сервер. Эти функции можно применить к любым серверным элементам: public static void Add. Confirm. Message(Web. Control ctl, string message) { ctl. Attributes. Add(«onclick», «if ( ! confirm( ‘» + message + «‘ )) return false; «); } public static void Add. Popup. Message(Web. Control ctl, string message) { ctl. Attributes. Add(«onclick», «alert( ‘» + message + «‘); «); }

Работа с данными • Для того чтобы создавать интересные web-страницы,  необходимо наполнить их динамичным, обновляемымРабота с данными • Для того чтобы создавать интересные web-страницы, необходимо наполнить их динамичным, обновляемым содержанием. Особенно необходимо это в бизнес-приложениях — банковских, интернет-магазинах и аукционах. Важная часть работы, которую выполняет разработчик ASP. NET — это связывание своих страниц с источниками данных, отображение данных на странице, создание удобных средств взаимодействия с ними. • Для хранения данных чаще всего используются СУБД (системы управления базами данных). В ASP. NET работа с данными происходит через ADO. NET — часть. NET, разработанная специально для доступа к базам данных или XML-файлам.

ADO. NET • ADO. NET — это набор классов для работы с внешними данными.  •ADO. NET • ADO. NET — это набор классов для работы с внешними данными. • Соединение в ADO. NET может происходить с помощью различных провайдеров. • Классы ADO. NET объединены в несколько пространств имен. • System. Data — это ядро ADO. NET. Оно содержит классы, необходимые для связи посредством любых провайдеров данных. Эти классы представляют таблицы , строки, столбцы, Data. Set (множество взаимосвязанных таблиц ). Там определены интерфейсы (в смысле языка C#) соединений с базами данных, команд, адаптеров данных. • System. Data. Common — базовые классы для всех провайдеров данных — Db. Connection, Db. Command, Db. Data. Adapter. • В System. Data. Ole. Db находятся классы, позволяющие работать с источниками данных Ole. Db, в том числе с MS SQL версии 6. 0 и ниже. Там находятся такие классы, как Ole. Db. Connection, Ole. Db. Data. Adapter и Ole. Db. Command. • System. Data. Odbc содержит классы, которые работают с источниками данных ODBC посредством провайдера. NET ODBC. Классы имеют аналогичные имена с префиксом Odbc. • System. Data. Sql. Client. Здесь определен провайдер данных для СУБД SQL Server версии 7. 0 и выше. Содержатся классы Sql. Connection, Sql. Transaction, Sql. Command и другие. • В System. Data. Sql. Types находятся классы, представляющие типы данных СУБД SQL Server. • Классы ADO. NET делятся на 3 типа. Классы типа Disconnected определяют базовую структуру данных, например, Data. Table. Они независимы от каких-либо провайдеров данных и могут создаваться и заселяться данными непосредственно в программе. Классы Shared — базовые и общие для всех провайдеров. Классы Data Provider — специфические для разных провайдеров.

Использование ADO. NET • Программирование ADO. NET • Все провайдеры данных содержат классы соединений, адаптеров, команд.Использование ADO. NET • Программирование ADO. NET • Все провайдеры данных содержат классы соединений, адаптеров, команд. Схема типичной программы в ADO. NET следующая: • 1. Вначале создается соединение с базой данных — класс Connection , который обеспечивается необходимой информацией — строкой соединения. • 2. Создается объект Command и задается команда, которую необходимо выполнить в данной СУБД. Эта команда может быть запросом SQL или исполняемой процедурой. Нужно задать параметры этой команды, если они имеются. • 3. Если команда не возвращает данных, она просто выполняется с помощью одного из методов Execute. Например, это может быть удаление или обновление данных таблицы. • 4. Если команда возвращает выборку данных, их необходимо куда-то поместить. Решите, нужно ли вам получить данные для последующего использования без связи с базой данных или же нужно просто быстро выполнить команду. В первом случае нужно создать класс Data. Adapter и с его помощью сохранить данные в Data. Set или в Data. Table. Во втором случае создается класс Data. Reader, который требует сохранять соединение на все время работы, хранит выборку только для чтения и позволяет двигаться только вперед. Зато чтение с помощью Data. Reader выполняется в несколько раз быстрее, чем в Data. Adapter. • 5. Задать полученный Data. Set или Data. Reader как источник данных элемента управления или вывести их на страницу другим способом.

Элементы – источники данных • Эти элементы облегчают работу с ADO. NET, инкапсулируя работу с соединениями,Элементы – источники данных • Эти элементы облегчают работу с ADO. NET, инкапсулируя работу с соединениями, командами и адаптерами. Они реализуют интерфейс IData. Source, в котором определен базовый набор возможностей работы с источниками данных. Большинство этих классов предоставляют функциональность для чтения и записи. Они являются обертками объектов ADO. NET. В предыдущих версиях надо было создавать объекты ADO самим и связывать элементы-управления с ними посредством команды Data. Bind. Теперь элементы управления связываются c элементом-источником посредством свойства Data. Source. ID. Любой класс-источник данных может быть связан почти с любым классом для отображения данных, и это предоставляет большую гибкость. • Всего в ASP. NET 5 элементов-источников данных : Sql. Data. Source , Access. Data. Source и Object. Data. Source для работы с табличными источниками данных и Xml. Data. Source и Site. Map. Data. Source — для работы с иерархическими данными. • Sql. Data. Source позволяет соединяться с большинством реляционных СУБД. Sql в названии класса означает, что служит для соединения с базами, которые понимают язык запросов Sql, а не только с MS SQL Server. • Access. Data. Source оптимизирован для работы с базами Access. Например : • Site. Map. Data. Source — это специализация Xml. Data. Source, работает с файлами навигации по сайту и служит источником данных для элементов управления навигации. • Object. Data. Source нужен для соединения с написанными программистом бизнес-объектами. • Элементы-источники данных предназначены для двустороннего обмена данными, то есть как для чтения, так и для записи. Сами по себе они ничего не отображают. Данные будут доступны подключенным к ним элементам управления.

Кэширование и сортировка • Кэширование нужно для увеличения эффективности работы с данными. При включенном кэшировании Sql.Кэширование и сортировка • Кэширование нужно для увеличения эффективности работы с данными. При включенном кэшировании Sql. Data. Source «запоминает» большое количество записей на заданное время, даже если все данные не отображаются сразу, но могут понадобиться при перелистывании. Например, студент читает первую страницу лекции, логично, что он вскоре перейдет ко второй. Если сервер хранит в оперативной памяти все страницы лекции, он их оперативно выдаст, не обращаясь к базе. • При включенном кэшировании данные читаются «большим куском», а выборка записей происходит с помощью фильтрования. • В Sql. Data. Source кэширование и сортировка возможны только при получении данных через Data. Set. Если Data. Source. Mode равно Data. Reader, а Enable. Caching — True, будет выброшено исключение Non. Supported. Exception. • Длительность кэширования можно задать в свойстве Cache. Duration, это может быть определенное количество секунд или Infinite, то есть данные никогда не обновляются. • Поведение кэширования зависит от сочетания свойств Cache. Duration и Cache. Expiration. Policy. Если значение Cache. Expiration Policy равно Absolute, то элемент запрашивает информацию через промежутки времени, определенные в Cache. Duration, а старую стирает из памяти. Если Cache. Expiration. Policy равен значению Sliding, то Sql. Data. Source начинает отсчет времени после каждого запроса к нему. Данные из кэша устаревают, если в течение времени Cache. Duration не было ни одного Select-запроса. • В Filter. Expression задается выражение для фильтрации, причем формат этих выражений аналогичен тому, что используется для форматирования строк с параметрами в фигурных скобках {0}, {1}, в которые подставляются значения из источника, указанного в Filter Parameters. • В свойстве Sort. Parameter. Name можно записать список полей, по которым проводится сортировка, возможно с добавлением опции Desc для сортировки в порядке убывания. Параметры передаются в команду Select, если это серверная процедура.

Object. Data. Source • Как уже было сказано, этот класс работает с бизнес-объектами. Это такие классы,Object. Data. Source • Как уже было сказано, этот класс работает с бизнес-объектами. Это такие классы, которые инкапсулируют логику работы с данными, нужными в приложении. Класс бизнес-объекта может быть написан на любом языке. NET. Как и все классы, он располагается в папке App_Code. • Object. Data. Source работает как связующее звено между бизнес-объектами и элементами управления, отображающими данные. Получается многоуровневая компонентная архитектура. Классы бизнес-объектов могут поменять свое внутреннее представление, и это никак не отразится на страницах, которые их используют. Object. Data. Source работает во многом так же, как Sql. Data. Source , с той разницей, что он имеет дело не с базой данных, а с классом. • Свойство Type. Name класса Object. Data. Source указывает на используемый класс. Класс бизнес-объекта должен поддерживать конструктор и 4 метода (возможно, и больше) — для чтения, редактирования, удаления и добавления данных в источник данных. Элемент управления Object. Data. Source пользуется этими методами. • Например, свойство Select. Method указывает на метод класса бизнес-объекта , который возвращает данные. • Откуда бизнес-объект берет данные, ему не важно. Некоторые бизнес-объекты работают с базами данных, некоторые — с сессией или текстовыми файлами. Главное, что метод, который он использует для чтения, должен возвращать класс, реализующий интерфейс IEnumerable. Update. Method — метод, который обновляет данные. Аналогичную функцию выполняют Delete. Method и Insert. Method. • Класс бизнес-объекта может поддерживать метод Select. Count, который возвращает общее количество объектов в источнике данных. Object. Data. Source вызывает этот метод, чтобы реализовать разбиение на страницы. • Чаще всего данные все-таки получают из баз данных, XML-файлов или web-сервисов. Классы бизнес-логики могут разрабатывать одни члены команды, а заниматься дизайном страниц — другие. Их можно использовать и в обычных приложениях в Windows Forms.

Элементы-потребители данных.  Data-Bound Controls • Потребители данных отображают данные, полученные из классов-источников данных. Они предоставляютЭлементы-потребители данных. Data-Bound Controls • Потребители данных отображают данные, полученные из классов-источников данных. Они предоставляют много полезных функций. Например, элемент управления Grid. View может не только показывать данные, но и сортировать, выбирать, редактировать их. Если этой функциональности недостаточно, ее можно расширить, написав собственные обработчики событий. • Элементы, которые могут быть связаны с элементами-источниками данных, многообразны. Во-первых, это уже хорошо знакомые Drop. Down. List, List. Box, Check. Box. List, Radio. Button. List, Bulleted. List. Однако у всех них необходимо в качестве источника данных указывать не Data. Source, а Data. Source. ID. Все эти элементы отображать могут только одно поле, указанное в Data. Text. Field, с возможностью задания второго в качестве индексного в свойстве Data. Value. Field: • <asp: Sql. Data. Source ID="Sql. Data. Source 3" runat="server" Connection. String="» • Select. Command=»SELECT [Category. Name], [Category. ID] FROM [Categories]»> • • • • • • Append. Data. Bound. Items — это новое свойство. Оно позволяет комбинировать данные из элемента-источника с данными, статически объявленными на странице.

Repeater • Repeater в переводе означает тот, кто повторяет.  • Шаблон — это множество теговRepeater • Repeater в переводе означает «тот, кто повторяет». • Шаблон — это множество тегов HTML и серверных элементов управления, которые задают образец для отображения составной части сложного элемента управления. Data. Grid может использовать шаблоны или нет, но Repeater без них существовать не может — сам по себе он не имеет визуального представления. Таким образом, программист сам определяет его внешний вид. Кроме Data. Source. ID и Data. Member, собственных свойств у него нет. Поэтому у программиста есть полный контроль над тем, как выводится Repeater. • Как минимум, должен быть описан шаблон Item. Template. Header. Template отображается один раз в начале отрисовки репитера, Footer. Template в конце, Separator. Template между отображением каждого пункта, Alternating. Item. Template — для четных пунктов. Все серверные элементы управления в шаблон помещаются целиком, поэтому, чтобы получить таблицу, используют простые теги HTML. Например, открывающий тег

помещают в Header. Template, а закрывающий — в Footer. Template.

Data. List • Data. List имеет те же черты, что и Repeater , то есть выводитData. List • Data. List имеет те же черты, что и Repeater , то есть выводит данные согласно шаблонам. Однако это более богатый элемент управления. Во-первых, он поддерживает выбор, редактирование, удаление и вставку. Поэтому список шаблонов пополнился Selected. Item. Template и Edit. Item. Template. Кроме того, у него есть верхний и нижний колонтитулы со стилями Header. Style и Footer. Style. • Во-вторых, можно изменить способы отображения. По умолчанию Data. List выводит данные поколонно в таблице. Свойство Repeat. Layout, установленное как Flow, убирает табличные теги из выходного потока. Repeat. Direction меняет направление вывода с вертикального на горизонтальное. Repeat. Columns задает количество столбцов таблицы, по умолчанию равное 1. • Data. List — наследник абстрактного класса Base. Data. List, который наследует Web. Control. Поэтому у него, в отличие от Repeater , имеются визуальные свойства. При отображении он представляет собой таблицу, поэтому присутствуют свойства Cell. Padding и Cell. Spacing. • У Data. List есть шаблон по умолчанию, Visual Studio и VWD создают его в виде вертикально расположенных меток для каждого поля, а слева от них помещают текст с названием поля. Чтобы войти в режим редактирования шаблона, нужно воспользоваться возможностью Smart. Tag — Edit Templates. После того, как редактирование окончено, необходимо выйти из режима — End Template Editing.

Data. Grid • Это очень популярный элемент управления, и неудивительно.  Особенно много он применялся вData. Grid • Это очень популярный элемент управления, и неудивительно. Особенно много он применялся в ASP. NET 1. x, но теперь его функции перекрываются Grid. View. Тем не менее его стоит изучить, так как многие его свойства схожи со свойствами Grid. View. Data. Grid делает очень легким представление табличной информации, которая содержится в базах данных, файлах XML или создается вручную. Достаточно создать Data. Grid , установить свойство Data. Source и получить готовую таблицу на странице. Формат таблицы можно менять независимо от данных. Данные можно сортировать, выбирать, редактировать. • В простейшем варианте нужно установить только свойство Data. Source, его значением может быть объект, реализующий интерфейс IEnumerable, например Sql. Data. Reader, Data. Table. При этом на странице выводится таблица, где строкам соответствуют записи, а столбцам — поля.

Grid. View • Элемент управления Grid. View является усовершенствованным элементом, призванным заменить Data. Grid. Все сказанноеGrid. View • Элемент управления Grid. View является усовершенствованным элементом, призванным заменить Data. Grid. Все сказанное о Data. Grid относится к Grid. View , но с немного другими названиями. Любой Data. Grid можно преобразовать в Grid. View , но не наоборот. Хотя в простейшем варианте Data. Grid отображает такую же таблицу, он наследник не Data. Grid, а Composite. Data. Bound. Control. • Главное преимущество Grid. View — автоматическое связывание с данными, благодаря чему нет необходимости писать обработчики событий, чтобы обеспечить функциональность, такую как удаление, редактирование, сортировка, разбиение на страницы при условии связывания с элементами-источниками данных. Он обеспечивает стандартную обработку подобных событий, но ее всегда можно расширить, чтобы обеспечить дополнительные возможности. • В отличие от версии 1. 1, новые элементы могут работать и на мобильных устройствах.

Details. View • Элемент управления Details. View — еще одна новинка ASP. NET. Он показывает каждыйDetails. View • Элемент управления Details. View — еще одна новинка ASP. NET. Он показывает каждый раз одну запись из источника данных в таблице с двумя столбцами, где слева отображается название поля, а справа — значение. Так же как и Grid. View , Details. View позволяет производить разбивку на страницы, редактирование и удаление с автоматическим связыванием с источником данных. Он также является наследником Composite. Data. Bound. Control. • Visual Studio предоставляет, как обычно, Smart. Tag, с помощью которого можно задать источник данных, автоформатировать элемент управления, отредактировать поля и шаблоны полей. У него есть шаблон Insert. Item. Template, которого нет в Grid. View. Details. View поддерживает разбиение на страницы, хотя на странице всегда только одна запись. • В отличие от Grid. View , Details. View позволяет вставлять записи. Для этого нужно установить значение свойства Auto. Generate. Insert Button= «True». При отображении появится кнопка New. • Еще один новый элемент Form. View похож на Details. View , но отличается от него тем, что нуждается в шаблоне для своего представления: