Upload
igor-shkulipa
View
143
Download
5
Embed Size (px)
Citation preview
Темы лекции: ASP.NET. Web Forms. Часть 3.
Практическое задание: ASP.NET. Web Forms.
Тренер: Игорь Шкулипа, к.т.н.
Разработка Веб-приложений на платформе Microsoft .NET Framework.
Занятие 7
http://www.slideshare.net/IgorShkulipa 2
ASP.NET Web Parts С помощью ASP.NET Web Parts Framework легко создавать собственные
пользовательские веб-страницы. Эта платформа состоит из элементов управленияи компонентов, которые выполняют:
• Определение настраиваемых разделов.Платформа позволяет структурировать страницу и указывать настраиваемыеразделы страницы через так называемые зоны веб-частей.
• Предоставление компонентов для выбора элементов.В дополнение к настраиваемым разделам платформа поставляется соспециальными готовыми разделами, позволяющими редактировать свойстваинформационных элементов, отображаемых на странице, или добавлять и удалятьэлементы информации на странице.
• Настройка веб-страницы.Как только пользователь зарегистрировался в приложении, он может настроитьвеб-страницу, перетаскивая отображенные элементы по разным настраиваемымразделам. Пользователь может даже закрыть или свернуть содержимое, чтобыосвободить больше места для другого, более интересного содержимого.
• Сохранение настроенного внешнего вида.ASP.NET автоматически сохраняет персонализированный внешний вид веб-страницы с помощью инфраструктуры персонализации.
Страница, использующая эту платформу, называется страницей веб-частей, аинформационные элементы, которые могут отображаться на странице - веб-частями.
http://www.slideshare.net/IgorShkulipa 3
Создание веб-частей
• Создание страницы.
• Добавление элемента управления WebPartManager.
• Добавление элементов управления WebPartZone.Каждый раздел на странице, который должен отображать специальныевеб-части, инкапсулируется в экземпляр элемента управленияWebPartZone.
• Добавление веб-частей.Можно применять простые пользовательские элементы управления,готовые пользовательские элементы управления, специальныесерверные элементы управления либо элементы управления,унаследованные непосредственно от класса WebPart.
• Добавление предварительно построенных зон и частей.Если пользователь желает добавлять или удалять веб-части во времявыполнения либо редактировать свойства веб-частей, к веб-страницепонадобится добавить предварительно построенные готовые зоны,такие как CatalogZone, которая дает возможность пользователюдобавлять веб-части на страницу.
http://www.slideshare.net/IgorShkulipa 4
Элементы управления WebPartManager и WebPartZones
Элемент WebPartManager работает со всеми добавленными н веб-странице зонами и знает обо всех доступных веб-частях страницы. Онуправляет персонализацией и обеспечивает настройку веб-страницыдля текущего зарегистрированного пользователя.
Элемент управления WebPartManager также генерирует исключения,которые можно перехватывать в своих приложениях для выполнениянеобходимых действий, когда пользователь добавляет или удаляетвеб-часть, либо когда одна веб-часть взаимодействует с другой веб-частью.
После помещения на страницу элемента WebPartManager можнодобавлять настраиваемые разделы. Такие разделы называются зонамивеб-частей (WebPartZones), и каждая зона может содержать стольковеб-частей, сколько необходимо пользователю.
http://www.slideshare.net/IgorShkulipa 5
Пример. Пользовательский элемент. WebPart1.ascx
<%@ Control Language="C#" AutoEventWireup="true"
CodeBehind="WebPart1.ascx.cs"
Inherits="WFApplication1.WebPart11" %>
<body>
<div>
Hello, Web Parts!!!
</div>
</body>
http://www.slideshare.net/IgorShkulipa 6
Пример. WebParts.aspx
<%@ Page Title="" Language="C#"
MasterPageFile="~/Site.Master"
AutoEventWireup="true" CodeBehind="WebParts.aspx.cs«
Inherits="WFApplication1.WebParts" %>
<%@ Register Src="~/WebPart1.ascx" TagName="WebPart1" TagPrefix="control" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent" runat="server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">
<asp:WebPartManager ID="WebPartManager1" runat="server" />
<table style="width: 100%">
<tr style="vertical-align: top">
<td style="width: 20%"></td>
<td style="width: 60%">
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<control:WebPart1 ID="WebPart1ID" runat="server" />
</ZoneTemplate>
</asp:WebPartZone>
</td>
<td style="width: 20%"></td>
</tr>
</table>
</asp:Content>
http://www.slideshare.net/IgorShkulipa 8
Уровни безопасности
В основном, для большей части веб-приложений основные задачи дляреализации защиты, всегда одни и те же:
• Аутентификация• Авторизация• Конфиденциальность• Целостность
ASP.NET включает базовую инфраструктуру для выполненияаутентификации и авторизации. Библиотека базовых классов .NETFramework включает ряд классов в пространстве именSystem.Security, которые предназначены для шифрования и подписиданных.
http://www.slideshare.net/IgorShkulipa 9
АутентификацияАутентификация - процесс определения идентичности пользователя и
обеспечения гарантий этой идентичности. Процесс аутентификациианалогичен регистрации пользователей. Как только идентичностьустановлена, маркер подтверждает ее, так что куда бы вы ни пошли впределах конкретной области, ваша личность будет известной.
В приложениях ASP.NET аутентификация реализуется одной из следующихвозможных аутентифицирующих систем:
• аутентификация Windows• аутентификация с помощью форм• специальный процесс аутентификации
Идентичность пользователя отслеживается разными способами, в зависимостиот типа аутентификации.
Например, операционная система Windows использует 96-битное число,называемое SID (security identifier - идентификатор безопасности) дляидентификации каждого входящего пользователя.
При аутентификации с помощью форм ASP.NET пользователю выдаетсяаутентифицирующий мандат формы, представляющий собой комбинациюзначений, которые шифруются и помещаются в cookie-набор.
http://www.slideshare.net/IgorShkulipa 10
Авторизация
Авторизация - это процесс определения прав и ограничений,назначенных аутентифицированному пользователю. Авторизация - этопроцесс выдачи допуска на определенные ресурсы, например, наглавную страницу.
В веб-приложениях разные типы авторизации происходят на разныхуровнях. Например, на самом верхнем уровне код может проверятьидентичность пользователя и решать, можно ли продолжать даннуюоперацию. На нижнем уровне можно настроить ASP.NET так, чтобызапрещать доступ к определенным веб-страницам или каталогам дляопределенных пользователей или ролей. На еще более низком уровне,когда код выполняет различные задачи - такие как подключение кбазе данных, открытие файла записи в журнал событий и т.п. -операционная система Windows проверяет права учетной записиWindows, от имени которой выполняется данный код.
http://www.slideshare.net/IgorShkulipa 11
Конфиденциальность и целостность
Конфиденциальность означает обеспечение невидимости данных длянеавторизованных пользователей во время передачи их по сети илисохранении в хранилищах, таких как базы данных.
Целостность - это обеспечение невозможности изменения данных никемво время передачи по сети или сохранения в хранилище. И то, идругое основано на шифровании.
Шифрование - процесс кодирования данных, делающий невозможным ихчтение другими пользователями. Шифрование в ASP.NET являетсясредством, полностью отделенным от аутентификации, авторизации изаимствования прав. Его можно применять в комбинации с этимисредствами либо самостоятельно.
http://www.slideshare.net/IgorShkulipa 12
Получение доступа к страницеПо умолчанию анонимные пользователи могут обращаться к любой странице
ASP.NET. Но когда пользователь запрашивает веб-страницу, анонимный доступ ккоторой закрыт, выполняется несколько шагов:
• Запрос отправляется веб-серверу.
• Пользователь предоставляет свое «удостоверение», которое затемверифицируется - либо вашим приложением (в случае аутентификации спомощью форм), либо автоматически средствами IIS (в случае аутентификацииWindows).
• Если удостоверение пользователя подтверждается, ему предоставляется доступк веб-странице. Если же оно оценивается как нелегитимное, ему предлагаетсяповторить попытку регистрации, либо же выполняется переадресация настраницу с сообщением о закрытии доступа.
http://www.slideshare.net/IgorShkulipa 13
Получение доступа к защищенной странице
Когда пользователь запрашивает защищенную веб-страницу, которая открытатолько для определенных пользователей или ролей, процесс аналогичен, нодобавляется дополнительный шаг:
• Предыдущие пункты
• Удостоверение или роли аутентифицированного пользователя сравниваются сосписком разрешенных пользователей и ролей. Если пользователь присутствуетв списке, ему открывается доступ к ресурсу, в противном случае доступ будетзакрыт.
• Пользователи, которым отказано в доступе, либо приглашаются на повторнуюрегистрацию, либо перенаправляются на веб-страницу с сообщением о закрытиидоступа.
http://www.slideshare.net/IgorShkulipa 14
Аутентификация с помощью форм
Аутентификация с помощью форм - это система аутентификации общегоназначения, основанная на двух концепциях.
• Первая из них - страница входа (login page), которая можетудостоверить действительность пользователей (обычно сверяякомбинацию имени и пароля с базой данных или другим хранилищемданных).
• Вторая - это механизм предохранения и восстановленияконтекста безопасности при каждом запросе (обычно сприменением cookie-набора). Таким образом, пользователюпонадобится войти только один раз.
Аутентификация с помощью форм основана на билетах (такженазываемых маркерами). Это значит, что когда пользовательрегистрируется, он получает так называемый билет с базовойинформацией о себе. Информация сохраняется в зашифрованномcookie-наборе, который присоединяется к ответу, так чтоавтоматически отправляется в каждом последующем запросе.
Аутентификация с помощью форм инкапсулирована в виде классаFormsAuthentication.
http://www.slideshare.net/IgorShkulipa 15
Аутентификация с помощью форм
http://www.slideshare.net/IgorShkulipa 16
Преимущества АсПФ
• Контроль над кодом аутентификацииПоскольку аутентификация с помощью форм реализована полностью внутриASP.NET, вы получаете полный контроль над выполнением аутентификации.Вам не нужно полагаться ни на какую внешнюю систему, как это имеет местопри аутентификации Windows.
• Контроль над внешним видом формы входаВы имеете ту же степень контроля над внешним видом аутентификации спомощью форм, что и над ее функциональностью.
• Работа с любым браузеромАутентификация с помощью форм использует в качестве пользовательскогоинтерфейса стандартный HTML, так что все браузеры могут его обработать.
• Хранение информации о пользователяхАутентификация с помощью форм по умолчанию хранит пользователей в файлеweb.config, но эту информацию можно хранить где угодно. Для этогопонадобится только написать код, который обращается к хранилищу данных иизвлекает информацию о пользователях.
• Гибкость в хранении информации о пользователях также означает возможностьконтроля над созданием и администрированием пользовательскихучетных записей, а также присоединения дополнительной информации к этимучетным записям, такой как персональные предпочтения по настройке внешнеговида веб-сайта
http://www.slideshare.net/IgorShkulipa 17
Недостатки АсПФ
• Вы должны самостоятельно создавать пользовательский интерфейсдля регистрации пользователей. Можно либо целиком создатьсобственную страницу входа, либо использовать элементы управлениябезопасностью ASP.NET.
• Вы должны самостоятельно поддерживать каталог удостоверенийпользователей.
• Вы должны самостоятельно предпринимать дополнительныепредосторожности против вмешательства в сетевой трафик.
http://www.slideshare.net/IgorShkulipa 18
Классы платформы аутентификации с помощью форм
Имя класса Описание
FormsAuthentication
Основной класс для взаимодействия с инфраструктурой аутентификации с помощью форм. Он предоставляет базовую информацию о конфигурации и позволяет создавать билет, устанавливать cookie-наборы и перенаправлять со страницы входа на исходную запрошенную страницу в случае успешной проверки удостоверения пользователя
FormsAuthenticationEventArgs
FormsAuthenticationEventArgs инициирует событие Authenticate, которое можно перехватить. Соглашения о передаваемых аргументах события инкапсулируются в экземпляре этого класса. Содержит базовую информацию об аутентифицированном пользователе
FormsAuthenticationTicket
Этот класс предоставляет информацию о пользователе, которая будет зашифрована и помещена в cookie-набор аутентификации
FormsIdentity
Этот класс реализует интерфейс IIdentity и является специфичным для аутентификации с помощью форм. Ключевым дополнением класса FormsIdentity, кроме членов, необходимых для реализации интерфейса IIdentity, является свойство Ticket, представляющее билет аутентификации. Это позволяет сохранять и извлекать дополнительную информацию из билета
FormsAuthenticationModule
Ядро инфраструктуры аутентификации с помощью форм, устанавливающее контекст безопасности и выполняющее при необходимости автоматическое перенаправление на страницу входа
http://www.slideshare.net/IgorShkulipa 19
Пример. Login.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master"
AutoEventWireup="true" CodeBehind="Login.aspx.cs"
Inherits="WFApplication1.Login" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent"
runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent"
runat="server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="MainContent«
runat="server">
<asp:TextBox ID="LoginTB" runat="server" AutoPostBack="true"/>
<asp:TextBox ID="PassTB" runat="server" TextMode="Password"/>
<asp:Button ID="LoginBTN" runat="server" Text="Login"
OnClick="LoginBTN_Click"/>
</asp:Content>
http://www.slideshare.net/IgorShkulipa 20
Пример. Login.aspx.cs
public partial class Login : System.Web.UI.Page
{
protected void LoginBTN_Click(object sender, EventArgs e)
{
//Перед этим стоило бы сделать проверку авторизации...
FormsAuthentication.RedirectFromLoginPage(LoginTB.Text, true);
}
}
http://www.slideshare.net/IgorShkulipa 21
Пример. Web.config
<authentication mode="Forms">
<forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH">
</forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
http://www.slideshare.net/IgorShkulipa 24
Membership API
Платформа Membership API предоставляет полный набор готовых функций управленияпользователями:
• Возможность создавать и удалять пользователей - как программно, так и с помощьювеб-утилиты конфигурирования ASP.NET.
• Возможность переустановки паролей с автоматической отправкой пользователямновых паролей по электронной почте, если известен адрес электронной почты данногопользователя.
• Возможность автоматической генерации паролей для пользователей, еслипользователи создаются автоматически в фоновом режиме.
• Возможность нахождения пользователей в лежащем в основе хранилище данных,а также извлечения списков пользователей и подробной информации о каждом их них.
• Набор предварительно разработанных элементов управления для создания страницвхода и регистрации, а также для отображения состояния входа в различныхпредставлениях для аутентифицированных и не аутентифицированных пользователей.
• Уровень абстракции, который обеспечивает независимость приложений отконкретного лежащего в основе хранилища данных через классы поставщиковчленства. Любая функциональность, перечисленная выше, работает совершеннонезависимо от конкретного используемого хранилища данных, и одни хранилища данныхможно заменять на другие - совершенно без необходимости в какой-либо модификацииприложений. По умолчанию Membership API полагается на базу данных SQL Server Expressдля хранения информации о пользователях и ролях.
http://www.slideshare.net/IgorShkulipa 25
Архитектура Membership API
http://www.slideshare.net/IgorShkulipa 26
Классы Membership API
Компонент Описание
Membership
Класс Membership - центральная точка взаимодействия с Membership API. Он предоставляет ряд методов для управления пользователями, их проверки и переустановки паролей
MembershipCreateUserExceptionИсключение, генерируемое в случае возникновения ошибки при попытке создания пользователя классом Membership
MembershipUser
Представляет отдельного пользователя, записанного в хранилище данных Membership API. Этот объект содержит всю информацию о пользователе и возвращается несколькими методами класса Membership, например, GetUser()
MembershipUserCollection
Коллекция пользователей Membership. Например, метод GetUsers() класса Membership возвращает экземпляр этой коллекции
MembershipProvider
Базовый класс, от которого наследуются собственные классы поставщиков членства, которые аутентифицируют пользователей по специальному хранилищу удостоверений
MembershipProviderCollectionКоллекций доступных поставщиков членства на машине для данного веб-приложения
SqlMembershipProviderРеализаций класса MembershipProvider, работающая с базами данных SQL Server
ActiveDirectoryMembershipProviderРеализация класса MembershipProvider, работающая со службой Active Directory
ActiveDirectoryMembershipUser
Класс, который наследует всю функциональность MembershipUser и добавляет некоторые специфичные для Active Directory свойства
http://www.slideshare.net/IgorShkulipa 27
Элементы управления безопасностью
Платформа ASP.NET поставляется с множеством элементов управления, которые упрощаютпостроение, например, страниц входа, а также связанных с ними страниц
Элемент управления
Описание
Login
Составной элемент управления, который решает наиболее общую задачу в приложениях, основанных на аутентификации с помощью форм - отображает текстовые поля для ввода имени пользователя и пароля, а также кнопку входа.
LoginStatus
Простой элемент управления, проверяющий состояние аутентификации текущего сеанса. Если пользователь не аутентифицирован, он предлагает кнопку входа для перенаправления на сконфигурированную страницу входа. В противном случае отображает кнопку выхода, обеспечивая возможность выхода из приложения. Этот элемент инкапсулирует поведение, которое обычно должно быть доступно на всех страницах. Поэтому его очень удобно размещать на мастер-странице.
LoginView
Элемент управления, который дает возможность отображать разные наборы элементов управления для аутентифицированных и неаутентифицированных пользователей.
PasswordRecoveryПозволяет пользователю извлечь пароль, если при регистрации был указан его адрес электронной почты.
ChangePasswordСоставной элемент управления, который запрашивает старый пароль пользователя и позволяет ему ввести и подтвердить новый пароль.
CreateUserWizardВключает полный мастер, который проводит пользователя (или администратора) через процесс создания нового пользователя.
http://www.slideshare.net/IgorShkulipa 28
Настройка Membership API
Прежде чем можно будет использовать интерфейс Membership API и элементыуправления безопасностью ASP.NET, потребуется выполнить несколькошагов:
• Сконфигурируйте аутентификацию с помощью форм в файле web.configобычным образом и запретите доступ анонимным пользователям.
• Настройте хранилище данных членства. Например, если используется SQLServer, то в базе данных SQL Server придется создать несколько таблиц ихранимых процедур.
• Сконфигурируйте в файле web.config строку подключения к базе данных ипоставщика членства, который должен использоваться.
• Создайте пользователей в хранилище данных членства с помощью веб-утилиты конфигурирования ASP.NET, либо воспользуйтесь собственнойстраницей администрирования, которая может быть реализована в веб-приложении с применением функций Membership API.
• Создайте страницу входа, которая использует готовый элемент управленияLogin или класс Membership для проверки введенных удостоверений иаутентификации пользователей.
http://www.slideshare.net/IgorShkulipa 29
Настройка Membership API
Все шаги по конфигурированию за исключением настройки поставщика можновыполнить с помощью ASP.NET WAT (Web Site Administration Tool - инструментадминистрирования веб-сайтов), в состав которого входит мастер настройкибезопасности.
http://www.slideshare.net/IgorShkulipa 30
Пример. Настройка SQL Express
http://www.slideshare.net/IgorShkulipa 31
Пример. Login.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master"
AutoEventWireup="true" CodeBehind="Login.aspx.cs"
Inherits="WFApplication1.Login" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent"
runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent"
runat="server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="MainContent«
runat="server">
<asp:TextBox ID="LoginTB" runat="server" AutoPostBack="true"/>
<asp:TextBox ID="PassTB" runat="server" TextMode="Password"/>
<asp:Button ID="LoginBTN" runat="server" Text="Login"
OnClick="LoginBTN_Click"/>
<br/>
<asp:Label ID="LabelResult" runat="server"></asp:Label>
</asp:Content>
http://www.slideshare.net/IgorShkulipa 32
Пример. Login.aspx.cs
public partial class Login : System.Web.UI.Page
{
protected void LoginBTN_Click(object sender, EventArgs e)
{
if (Membership.ValidateUser(LoginTB.Text, PassTB.Text))
{
LabelResult.Text = "Loged In";
}
else
{
LabelResult.Text = "Failed";
}
}
}
http://www.slideshare.net/IgorShkulipa 35
Элементы управления проверки достоверности
В состав ASP.NET входит элементы управления проверкой достоверности. Этиэлементы выполняют за разработчика приличную часть сложной работы,упрощая процесс проверки и избавляя от необходимости писать длинный код. :
• RequiredFieldValidatorКонтролирует, не пуст ли проверяемый элемент управления.
• RangeValidatorКонтролирует, находится ли значение связанного элемента управления впределах определенного диапазона.
• CompareValidatorКонтролирует, соответствует ли значение данного элемента управленияопределенной операции сравнения (больше, меньше и т.д.) с другойконстантой или значением элемента управления
• RegularExpressionValidatorКонтролирует, соответствует ли значение данного элемента управленияопределенному регулярному выражению
• CustomValidatorПозволяет определить любую клиентскую или серверную операцию проверкидостоверности JavaScript для выполнения собственной логики проверкидостоверности
• ValidationSummaryОтображает итоговую информацию с сообщениями об ошибках для каждогодавшего сбой элемента управления
http://www.slideshare.net/IgorShkulipa 36
Элемент управления RegularExpressionValidator
Элемент управления RegularExpressionValidator является одним изсамых мощных средств в наборе инструментов разработчикаприложений ASP.NET. Он позволяет проверять текст путемсопоставления с образцом, определенным в регулярном выражении.От разработчика требуется всего лишь установить это регулярноевыражение в свойстве ValidationExpression.
http://www.slideshare.net/IgorShkulipa 37
Часто используемые регулярные выражения
СодержимоеРегулярное выражение
Описание
Адрес электронной почты
\S+@\S+\.\S+
Определяет электронный адрес, в котором обязательно должен присутствовать символ @ и точка (.), и допускает наличие только непробельных символов
Пароль \w+
Определяет пароль, допускающий любую последовательность словесных символов (букв, пробелов или символов подчеркивания)
Пароль специфической длины
\w{4,10}Определяет пароль, который должен состоят не менее чем из 4, но и не более чем из 10 символов
Расширенный пароль
[a-zA-Z]\w{4,10}
Определяет пароль, в котором, как в пароле специфической длины, может всего присутствовать от 4 до 10 символов. Хитрость состоит в том, что первый символ должен находиться в диапазоне a-z или A-Z (т.е. должен начинаться с обычной буквы)
Еще один расширенный пароль
[a-zA-Z]\w*\d+\w*
Определяет пароль, начинающийся с буквенного символа, за которым следует ноль или более словесных символов, потом одна или более цифр и затем снова ноль или более словесных символов. Проще говоря, требует, чтобы где-то внутри пароля содержалось число. С помощью аналогичной схемы можно также требовать, чтобы в пароле содержалось как минимум два числа или другой специальный символ
Поле ограниченной длины символов
\S{4,10}
Определяет строку длиной от 4 до 10 символов (подобно примеру пароля), но позволяет использовать специальные символы (звездочки, амперсанды и т.д.)
http://www.slideshare.net/IgorShkulipa 38
Пример. Login.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="Login.aspx.cs" Inherits="WFApplication1.Login" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent" runat="server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">
<asp:RegularExpressionValidator runat="server" ID="LoginValidator"
ControlToValidate="LoginTB" ValidationExpression="\S{4,5}"
ErrorMessage="Incorrect Login" Display="dynamic">
Input Correct Login
</asp:RegularExpressionValidator>
<asp:TextBox ID="LoginTB" runat="server" OnTextChanged="LoginTB_TextChanged"
AutoPostBack="true"/>
<asp:TextBox ID="PassTB" runat="server" TextMode="Password"/>
<asp:Button ID="LoginBTN" runat="server" Text="Login" OnClick="LoginBTN_Click"/>
<br/>
<asp:Label ID="LabelResult" runat="server"></asp:Label>
</asp:Content>
http://www.slideshare.net/IgorShkulipa 40
ASP.NET AJAX на сервере: элемент управления ScriptManager
Элемент ScriptManager является "мозговым центром" серверной части моделиASP.NET AJAX. Этот веб-элемент управления не имеет никакого визуальногопредставления на странице. Однако он решает ключевую задачу -визуализирует ссылки на JavaScript-библиотеки ASP.NET AJAX.
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
Каждая страница, которая использует функции ASP.NET AJAX, требует наличияэкземпляра ScriptManager. Внутри страницы допустимо иметь только одинэлемент управления ScriptManager.
Если функции ASP.NET AJAX используются во всем веб-сайте, имеет смыслпоместить элемент ScriptManager в мастер-страницу.
Все элементы управления ASP.NET AJAX нуждаются в ScriptManager. Если ихразместить на странице, которая не содержит ScriptManager, работать они небудут и приведут к генерации исключения InvalidOperationException.
Например, UpdatePanel - удобный элемент управления, который позволяет взятьобычную страницу с серверной логикой и обеспечить ее обновление в лишенноммерцания стиле Ajax.
http://www.slideshare.net/IgorShkulipa 41
ASP.NET AJAX Control Toolkit
ASP.NET AJAX содержит модель, которая для добавленияфункциональности ASP.NET AJAX к существующим элементамуправления использует расширители элементов управления. Спомощью расширителей элементов управления эффекты Ajax можнодобавлять к существующей странице, не изменяя используемый еюнабор элементов управления.
Собственно платформа ASP.NET не содержит какие-либо расширителиэлементов управления. Их включает в себя инструментарий ASP.NETAJAX Control Toolkit.
Наиболее примечательная особенность инструментария ASP.NET AJAX втом, что он разрабатывается с применением совместной модели соткрытым исходным кодом, которая позволяет принимать участие вразработке всему сообществу. Инструментарий ASP.NET Control ToolkitAJAX является бесплатным и включает полный исходный код.
http://www.slideshare.net/IgorShkulipa 42
Установка инструментария ASP.NET AJAX Control Toolkit
http://www.slideshare.net/IgorShkulipa 43
Расширители ASP.NET AJAX Control Toolkit
Имя Описание
AlwaysVisibleControlExtenderЭтот расширитель фиксирует элемент управления в определенной позиции (например, в верхнем левым углу веб-страницы) даже при прокрутке содержимого страницы
AnimationExtender
Этот мощный и удивительно гибкий расширитель позволяет добавлять анимационные эффекты, такие как изменение размеров, перемещение, затухание, изменение цвета и многие другие, по отдельности или в комбинации друг с другом
AutoCompleteExtender
Этот расширитель позволяет предоставлять список предложенных записей на основе частичного ввода данных пользователем. Список записей генерируется методом веб-службы, как описано в предыдущем разделе
CalendarExtender
Этот расширитель отображает всплывающий календарь, который может быть присоединен к текстовому полю для облегчения ввода даты. Когда пользователь выбирает дату, она вставляется в присоединенный элемент управления
CascadingDropDownЭтот расширитель позволяет присоединять раскрывающиеся списки, не прибегая к кодированию решения вручную
CollapsiblePanelExtenderЭтот расширитель позволяет сворачивать и разворачивать панели на странице. Остальная часть содержимого страницы обтекает их автоматически
ColorPickerExtenderЭтот расширитель отображает всплывающий инструмент для выбора цвета, который может быть присоединен к текстовому полю для облегчения выбора цвета
http://www.slideshare.net/IgorShkulipa 44
Расширители ASP.NET AJAX Control Toolkit
ColorPickerExtenderЭтот расширитель отображает всплывающий инструмент для выбора цвета, который может быть присоединен к текстовому полю для облегчения выбора цвета
ConfirmButtonExtender
Этот расширитель перехватывает щелчки на элементах управления Button, LinkButton или ImageButton и выводит на экран подтверждающее сообщение. Событие щелчка подавляется, если пользователь решает отменить действие в диалоговом окне подтверждения
DragPanelExtender Этот расширитель позволяет перетаскивать панель по странице
DropDownExtender
Этот расширитель превращает практически любой элемент управления в раскрывающийся, когда курсор мыши помещается поверх него. Например, DropDownExtender можно использовать в сочетании с обычным элементом управления Label. Тогда пользователь сможет переместить курсор мыши над ним, выбрать другой элемент из списка (тем самым изменяя текст в метке) и затем сместить курсор мыши с элемента управления (позволяя метке вернуться к своему обычному виду)
DropShadowExtender
Этот расширитель добавляет графический эффект падающей тени вокруг панели. Падающая тень может быть частично прозрачной, и при этом можно управлять размером и степенью скругления ее углов
DynamicPopulateExtenderЭтот простой расширитель заменяет содержимое элемента управления результатом вызова метода веб-службы
http://www.slideshare.net/IgorShkulipa 45
Расширители ASP.NET AJAX Control Toolkit
FilteredTextBoxExtender
Этот расширитель позволяет запретить ввод определенных символов в текстовом поле (например, букв в текстовом поле, которое содержит числовые данные). Он предназначен для дополнения проверки достоверности, а не ее замены, поскольку злоумышленники могут обойти фильтрацию, изменяя визуализированную страницу или отключая JavaScript в браузере
HoverMenuExtenderЭтот расширитель позволяет отображать содержимое во всплывающем окне рядом с элементом управления, когда пользователь задерживает курсор мыши над ним
ListSearchExtender
Этот расширитель позволяет пользователю искать элементы в ListBox или DropDownList, вводя первые несколько букв текста элемента. Элемент управления ищет элементы и переходит к первому соответствию, по мере того как пользовательские вводит текст
MaskedEditExtender
Этот расширитель ограничивает вид допустимого ввода в текстовом поле с использованием маски. (Маска - это строка, которая определяет модель текста фиксированной длины и предоставляет готовые символы для облегчения пользователю ввода. Например, маска телефонного номера может отображать в текстовом поле набор символов "(___)___-____". По мере того как пользователь выполняет ввод, заполнители заменяются допустимыми цифрами, а нечисловые символы отклоняются.) MaskedEditExtender можно применять в сочетании с MaskedEditValidator, гарантируя, что пользователь не сможет обойти код JavaScript и ввести недопустимое значение
ModalPopupExtenderЭтот расширитель позволяет создавать иллюзию модального диалогового окна, затемняя страницу, отключая элементы управления и отображая наложенную панель поверх них
http://www.slideshare.net/IgorShkulipa 46
Расширители ASP.NET AJAX Control Toolkit
MultiHandleSliderExtender
Этот расширитель преобразует обычный элемент управления TextBox в ползунок. Однако этот ползунок обладает функциями, которые выходят за рамки его стандартного серверного эквивалента ASP.NET. Наиболее примечательно то, что поддерживается несколько ползунков, которые могут перетаскиваться вдоль дорожки независимо друг от друга. Это полезно, когда ползунок предназначен для указания диапазона значений
MutuallyExclusiveCheckBoxExtender
Этот расширитель позволяет связывать "ключ" с несколькими элементами управления CheckBox. Когда пользователь щелкает на флажке, который расширен подобным образом, отметка с любого другого флажка с тем же самым ключом снимается автоматически
NumericUpDownExtender
Этот расширитель присоединяется к текстовому полю, чтобы обеспечить конфигурируемые кнопки стрелок вверх и вниз (справа от него). Эти кнопки увеличивают числовое значение или значение даты в текстовом поле
PagingBulletedListExtender
Этот расширитель присоединяется к элементу управления BulletedList и придает ему возможности разбиения на страницы на стороне клиента, что позволяет разделить длинный список на меньшие разделы
PasswordStrength
Этот расширитель присоединяется к текстовому полю. По мере ввода он ранжирует криптографическую надежность значения текстового поля (чем выше показатель, тем большую трудность пароль представляет для взлома). Этот расширитель предназначен для использования в качестве ориентира для поля создания пароля
PopupControlExtenderЭтот расширитель предоставляет всплывающее содержимое, которое может отображаться рядом с любым элементом управления
http://www.slideshare.net/IgorShkulipa 47
Расширители ASP.NET AJAX Control Toolkit
ResizableControlExtenderЭтот расширитель позволяет пользователю изменять размеры элемента управления с помощью конфигурируемого маркера, который отображается в нижнем правом углу
RoundedCornersExtenderЭтот расширитель скругляет углы любого элемента управления, придавая ему аккуратный, профессиональный внешний вид
SliderExtenderЭтот расширитель преобразует текстовое поле в графический ползунок, который позволяет пользователю выбирать числовое значение, перетаскивая ползунок в позицию на дорожке
SlideShowExtender
Этот расширитель присоединяется к изображению, заставляя его выводить на экран последовательность изображений. Изображения предоставляются посредством метода веб-службы, и показ слайдов может выполняться в бесконечном цикле или с применением созданных кнопок воспроизведения, паузы и перехода к предыдущему или следующему изображению
TextBoxWatermarkExtender
Этот расширитель позволяет автоматически изменять цвет фона и предоставлять определенный текст, когда элемент управления TextBox пуст. Например, текстовое поле могло бы включать светло-серый текст "Введите значение на бледно-синем фоне". Этот текст исчезает, когда курсор помещается в текстовое поле или немедленно после ввода значения
ToggleButtonExtenderЭтот расширитель превращает обычный элемент управления CheckBox из ASP.NET во флажок с изображением
UpdatePanelAnimationExtender
Этот расширитель позволяет использовать те же анимации, что и AnimationExtender. Однако он предназначен для работы с элементом управления UpdatePanel и автоматического выполнения этих анимаций, когда обновление находится в состоянии выполнения или как только панель была обновлена
ValidatorCalloutExtender
Расширяет логику клиентской стороны элементов управления проверкой достоверности ASP.NET, чтобы они использовали всплывающие выноски проверки достоверности, которые указывают на элемент управления с недопустимым вводом
http://www.slideshare.net/IgorShkulipa 48
Элементы управления ASP.NET AJAX Control Toolkit
Имя Описание
Accordion
Этот элемент управления укладывает несколько панелей содержимого друг поверх друга и позволяет их просматривать по одной. При щелчке панель развертывается, а другие панели сворачиваются (оставляя видимым только заголовок). Дополнительные функции включают автоматическое затухание и опцию ограничения размера элемента управления (в этом случае большие области содержимого, когда они видимы, используют прокрутку)
AsyncFileUpload
Этот элемент управления подобен веб-элементу управления FileUpload, за исключением того, что он выполняет его работу асинхронно, разрешая пользователю продолжить взаимодействовать со страницей. (Очевидно, что обратная отправка страницы или переход к новой странице прервут асинхронную передачу файлов.) Элемент управления AsyncFileUpload может быть также сконфигурирован для отображения другого элемента управления во время загрузки. Обычно этот второй элемент управления (на который ссылается свойство ThrobberID) отображает простую анимацию, что ставит пользователя в известность о продолжении выполнения загрузки
ComboBox
Этот элемент управления был создан по примеру поля со списком Windows, которое предоставляет раскрывающийся список (подобный элементу управления DropDownList ASP.NET) и позволяет пользователю вводить произвольный текст (как элемент управления TextBox в ASP.NET). Он воспринимает многие элементы интерфейса программирования и большинство соглашений своего Windows-аналога
Editor
Этот удивительно мощный элемент управления предоставляет средства редактирования HTML-разметки, а также панель инструментов команд. Пользователь может переключиться между тремя представлениями: Html (которое отображает код разметки), Design (отображающее корректно визуализированное представление, подобно текстовому процессору) и Preview (которое аналогично Design, но без возможности редактирования)
http://www.slideshare.net/IgorShkulipa 49
Элементы управления ASP.NET AJAX Control Toolkit
NoBot
Этот элемент управления выполняет несколько проверок, пытаясь выяснить, неосуществляет ли доступ к странице автоматизированная программа (робот), а нечеловек. Если NoBot решит, что доступ к странице производится роботом, запросбудет отклонен. Это позволяет предотвратить выполнение программ, которыекрадут содержимое или отправляют в блог спам-комментарии, хотя, понятно, егоможно обойти.Например, NoBot вынуждает браузер выполнить вычисление с помощьюJavaScript, которое использует HTML DOM, и передает результат,предназначенный для выявления обращений к странице, инициированных небраузером. NoBot может также отклонять запросы, которые выполняют обратнуюотправку формы слишком быстро или повторяют ее слишком часто в течениеопределенного интервала. Оба эти вида поведения наводят на мысль, чтодействует автоматизированная программа, а не человек
Rating
Этот элемент управления позволяет пользователям устанавливать рейтинг,перемещая курсор мыши над последовательностью значков звездочек, пока небудет выделено требуемое их количество
ReorderList
Этот элемент управления создает шаблонный список с возможностью прокрутки,который позволяет пользователю изменять порядок следования пунктов,перетаскивая их
Seadragon
Этот усовершенствованный элемент управления позволяет пользователю вшироких пределах масштабировать изображение, поддерживающее оченьбольшое увеличение, В действительности эти изображения составлены из сериинамного меньших мозаичных фрагментов, управление которыми производится навеб-сервере. Для создания изображения Seadragon нужен бесплатный инструментDeep Zoom Compose. Следует также отметить, что эти увеличиваемыеизображения являются значительно более громоздким средством, чем встроенноев Silverlight
TabContainer
Этот элемент управления напоминает вкладки, отображаемые в Windows. Каждаявкладка имеет заголовок, и пользователь переходит от одной вкладки к другой,щелкая на заголовках
http://www.slideshare.net/IgorShkulipa 50
Пример. Site.Master
<%@ Register TagPrefix="ajaxToolkit" Namespace="AjaxControlToolkit"
Assembly="AjaxControlToolkit" %>
<ajaxToolkit:ToolkitScriptManager runat="server">
<Scripts>
<asp:ScriptReference Name="jquery" />
<asp:ScriptReference Name="jquery.ui.combined" />
<asp:ScriptReference Name="WebForms.js" Assembly="System.Web"
Path="~/Scripts/WebForms/WebForms.js" />
<asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web"
Path="~/Scripts/WebForms/WebUIValidation.js" />
<asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web"
Path="~/Scripts/WebForms/MenuStandards.js" />
<asp:ScriptReference Name="GridView.js" Assembly="System.Web"
Path="~/Scripts/WebForms/GridView.js" />
<asp:ScriptReference Name="DetailsView.js" Assembly="System.Web"
Path="~/Scripts/WebForms/DetailsView.js" />
<asp:ScriptReference Name="TreeView.js" Assembly="System.Web"
Path="~/Scripts/WebForms/TreeView.js" />
<asp:ScriptReference Name="WebParts.js" Assembly="System.Web"
Path="~/Scripts/WebForms/WebParts.js" />
<asp:ScriptReference Name="Focus.js" Assembly="System.Web"
Path="~/Scripts/WebForms/Focus.js" />
<asp:ScriptReference Name="WebFormsBundle" />
<%--Site Scripts--%>
</Scripts>
</ajaxToolkit:ToolkitScriptManager>
http://www.slideshare.net/IgorShkulipa 51
Пример. Login.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="Login.aspx.cs" Inherits="WFApplication1.Login" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent" runat="server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">
<ajaxToolkit:CalendarExtender ID="Calendar1" runat="server"
TargetControlID="LoginTB" Animated="true" >
</ajaxToolkit:CalendarExtender>
<asp:TextBox ID="LoginTB" runat="server" OnTextChanged="LoginTB_TextChanged“
AutoPostBack="true"/>
<asp:TextBox ID="PassTB" runat="server" TextMode="Password"/>
<asp:Button ID="LoginBTN" runat="server" Text="Login" OnClick="LoginBTN_Click"/>
<br/>
<asp:Label ID="LabelResult" runat="server"></asp:Label>
</asp:Content>
http://www.slideshare.net/IgorShkulipa 53
Лабораторная работа №7.
К лабораторной работе №6 добавить возможность авторизации,валидацию ввода в форму и элементы AJAX Toolkit