c# web. Занятие 05

50
Темы лекции: ASP.NET. Web Forms. Часть 1. Практическое задание: ASP.NET. Web Forms. Тренер: Игорь Шкулипа, к.т.н. Разработка Веб-приложений на платформе Microsoft .NET Framework. Занятие 5

Upload: igor-shkulipa

Post on 21-Mar-2017

139 views

Category:

Education


1 download

TRANSCRIPT

Page 1: C# Web. Занятие 05

Темы лекции: ASP.NET. Web Forms. Часть 1.

Практическое задание: ASP.NET. Web Forms.

Тренер: Игорь Шкулипа, к.т.н.

Разработка Веб-приложений на платформе Microsoft .NET Framework.

Занятие 5

Page 2: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 2

ASP.NET

ASP.NET(Active Server Pages) — технология создания веб-приложенийи веб-сервисов от компании Майкрософт. Она является составнойчастью платформы Microsoft .NET и развитием более старой технологииMicrosoft ASP.

Когда платформа ASP.NET была выпущена впервые, от предыдущихпродуктов Microsoft и конкурирующих платформ ее отличали семьключевых фактов:

• ASP.NET интегрируется с .NET Framework• Код ASP.NET компилируется, а не интерпретируется• В ASP.NET поддерживается множество языков

программирования• ASP.NET обслуживается средой CLR

• Автоматическое управление памятью и сборкой мусора• Безопасность типов• Метаданные• Обработка ошибок• Многопоточностъ

Page 3: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 3

Особенности ASP.NET

• ASP.NET является объектно-ориентированной технологией• ASP.NET является самой настоящей объектно-

ориентированной технологией. Она не только предоставляеткоду полный доступ ко всем объектам .NET Framework, но ипозволяет использовать все концепции объектно-ориентированного программирования (ООП). Например, онапозволяет создавать пригодные для повторногоиспользования классы, стандартизировать код с помощьюинтерфейсов, расширять существующие классы за счетнаследования и объединять полезные функциональныевозможности в распространяемый скомпилированныйкомпонент.

Page 4: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 4

Особенности ASP.NET

• HTML- и веб-элементы управления• На момент создания ASP.NET существовало два типа мышления. Одних

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

Однако другие разработчики ASP.NET видели будущее в другом — вмногофункциональных серверных элементах управления,которые бы не просто имитировали отдельные дескрипторы HTML. Этиэлементы управления могли бы визуализировать свой интерфейс издесятков отдельных элементов HTML и при этом все равнопредоставлять программистам простой объектный интерфейс дляработы и позволять им использовать программируемые меню,календари, списки данных, средства проверки данных и т.д.

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

Page 5: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 5

Особенности ASP.NET

• ASP.NET поддерживает все браузеры• Одним из самых больших испытаний для разработчиков веб-

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

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

Page 6: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 6

Модель ASP.NET

Page 7: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 7

Динамический пользовательский интерфейс

Несомненно, модель элементов управления облегчает извлечениеинформации о форме. Еще более примечательно то, что она упрощаетжизнь при необходимости добавления информации к странице. Почтивсе свойства веб-элемента управления можно читать и устанавливать.Это означает, что, например, свойство текстового поля Text можноустановить так же просто, как и прочитать его.

HTML

<asp:Label ID="Label1" runat="server"></asp:Label>

C#

Label1.Text = "Welcome " + txtFirstName.Text + " " + txtLastName.Text;

Label1.ForeColor = Color.Red;

Page 8: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 8

Динамический пользовательский интерфейс

Этот код обладает несколькими преимуществами:• Во-первых, его намного легче написать (причем без ошибок). В данном

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

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

• Третим преимуществом модели элементов управления является способсокрытия низкоуровневых подробностей HTML. Это не только даетвозможность писать код без изучения всех индивидуальных особенностейHTML, но также позволяет страницам поддерживать более широкийдиапазон браузеров. Поскольку элемент управления визуализирует себясам, он обладает способностью адаптировать свой вывод с цельюподдержки различных браузеров, усовершенствованных клиентских свойствили даже других стандартов, связанных с HTML, наподобие XHTML или WML.По существу код уже не привязан непосредственно к стандарту HTML.

Page 9: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 9

Модель событий ASP.NET

ASP.NET предлагает управляемую событиями модель обработки (event-driven model). В этой модели разработчик сначала добавляет в веб-форму элементы управления, а затем решает, на какие события онхочет реагировать. Каждый обработчик событий представляет собойотдельный метод, благодаря чему код страниц выглядит аккуратно иорганизованно.

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

Page 10: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 10

Модель событий ASP.NET

1. При первом запуске страницы ASP.NET создает объекты этой страницы и ееэлементов управления. Далее выполняется код инициализации, после чегостраница преобразуется в HTML и возвращается клиенту, а созданные объектыудаляются из памяти сервера.

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

1. ASP.NET перехватывает эту возвращаемую страницу и снова воссоздает ееобъекты, возвращая их в то состояние, в котором они находились тогда, когдаэта страница в последний раз отправлялась клиенту.

1. Далее ASP.NET проверяет, какая именно операция привела к обратнойотправке данных, и генерирует соответствующие события (например,Button.Click), на которые разработчик может предусмотреть в своем кодеопределенную реакцию.

1. Затем, выполняется код разработчика, например, выполняется какая-тосерверная операция, а затем изменяются объекты элементов управления так,чтобы они отображали уже новую информацию.

1. Измененная страница преобразуется в HTML и возвращается клиенту.Объекты страницы удаляются из памяти. В случае если происходит еще однаобратная отправка данных, ASP.NET повторяет действия, перечисленные впунктах 2-4.

Page 11: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 11

Автоматическая обратная отправка данных

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

Чтобы добиться в пользовательском интерфейсе определенного эффекта,для обработки быстрых событий вроде перемещений курсора мышиможно создать клиентский сценарий JavaScript. Или, что даже лучше,можно воспользоваться специальным элементом управления ASP.NETсо встроенными возможностями подобного рода, например, одним изэлементов ASP.NET AJAX. Однако код бизнес-логики долженобязательно выполняться только в безопасной многофункциональнойсреде сервера.

Page 12: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 12

Автоматическая обратная отправка данных

Чтобы использовать автоматическую обратную отправку, понадобитсяустановить свойство AutoPostBack веб-элемента управления в true(по умолчанию это свойство устанавливается в false, что гарантируетоптимальную производительность в случаях, когда не требуетсяреагировать ни на какие события изменения). После этого ASP.NETиспользует клиентские возможности JavaScript для устраненияпробела между клиентским и серверным кодом.

В частности, происходит следующее: в случае создания веб-страницы содним или более веб-элементами управления, для которыхнастраивается AutoPostBack, ASP.NET добавляет в визуализируемуюHTML-страницу JavaScript-функцию по имени ____doPostBack(). Привызове эта функция инициирует обратную отправку, отправляястраницу обратно веб-серверу со всеми данными формы.

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

Page 13: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 13

Состояние представленияПоследним компонентом в модели ASP.NET является механизм состояния

представления (view state). Этот механизм решает еще одну проблему,которая возникает из-за того, что HTTP не поддерживает состояний —утрату информации об изменениях.

Каждый раз, когда страница отправляется обратно серверу, ASP.NETполучает все данные, которые пользователь ввел в любом изсодержащихся в дескрипторе <form> элементов управления <input>.После этого ASP.NET загружает веб-страницу в исходном состоянии(на основе схемы компоновки и параметров по умолчанию, которыебыли указаны в файле .aspx) и настраивает ее в соответствии с этиминовыми данными.

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

Page 14: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 14

Состояние представления

Для устранения этого ограничения в ASP.NET имеется свойинтегрированный механизм сериализации состояния.

Этот механизм работает так:• После завершения выполнения кода страницы (и непосредственно

перед генерацией и отправкой клиенту окончательного документаHTML) ASP.NET изучает свойства всех представленных на этойстранице элементов управления.

• Если хоть какое-то из этих свойств изменилось по сравнению с тем,каким оно было в исходном состоянии, ASP.NET делаетсоответствующую заметку в коллекции "имя-значение".

• Потом ASP.NET берет всю собранную информацию и сериализируетее в строку формата Base64 (который гарантирует отсутствиеспециальных символов, являющихся недопустимыми в HTML),

• А затем вставляет эту строку в раздел <form> страницы как новоескрытое поле.

Page 15: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 15

Состояние представления

При следующей обратной отправке данной страницы, ASP.NET выполняетперечисленные ниже действия:

1. Воссоздает объект страницы и ее элементов управления на основезначений по умолчанию (указанных в файле .aspx), в результате чегостраница оказывается в том же состоянии, в котором была, когдазапрашивалась впервые.

1. Выполняет десериализацию информации о состоянии и обновляет всеэлементы управления. В результате страница возвращается в состояние, вкотором находилась перед последней отправкой клиенту.

1. Напоследок производится настройка страницы в соответствии сотправленными данными формы. Например, если пользователь ввелновый текст в текстовом поле или же сделал новый выбор в окне списка,эта информация разместится в коллекции Form и используется ASP.NET дляпостройки соответствующих элементов управления. После этого страницаотображает текущее состояние при ее просмотре пользователем.

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

Page 16: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 16

Состояние представления

Page 17: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 17

Обработка веб-форм

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

Основные этапы потока обработки страницы ASP.NET:

• Инициализация структуры страницы

• Инициализация кода пользователя

• Проверка достоверности

• Обработка событий

• Автоматическая привязка данных

• Очистка

Page 18: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 18

Обработка веб-форм• Инициализация структуры страницы

На этом этапе ASP.NET создает страницу. Генерируются все элементыуправления, определенные в дескрипторах внутри веб-страницы.aspx. Более того, если страница запрашивается не впервые (иначеговоря, если это обратная отправка), ASP.NET десериализируетинформацию о состоянии представления и применяет ее ко всемэлементам управления.На этом этапе запускается событие Page.Init. Однако это событиередко обрабатывается веб-страницей, поскольку еще слишком рановыполнять инициализацию страницы. Причина в том, что объектыэлементов управления еще не созданы, а информация о состояниипредставления пока не загружена.

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

Page 19: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 19

Обработка веб-форм

• Проверка достоверностиВ состав ASP.NET входят специальные элементы управления, которыемогут автоматически проверять другие элементы управления,принимающие вводимые пользователем данные, и отображатьсообщения об ошибках. Эти элементы управления вступают в игрупосле того, как загрузится страница, но перед тем как произойдеткакое-то другое событие. Однако они по большей части являютсясамодостаточными, а это означает, что реагировать на генерируемыеими события проверки не нужно. Вместо этого можно в другомобработчике событий проверить, является ли действительной всястраница (с помощью свойства Page.IsValid).

• Обработка событийНа этом этапе страница является уже полностью загруженной ипроверенной. Поэтому ASP.NET запускает все события, которыеуспели произойти с момента последней обратной отправки данных.

Page 20: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 20

Обработка веб-форм

• В конце своего жизненного цикла страница преобразуется в HTML-разметку.

После этого начинается реальная очистка и запускается событиеPage.Unload. В этот момент объекты страницы все еще доступны, ноокончательная HTML-разметка уже сгенерирована и не может бытьизменена.

У .NET Framework имеется служба сборки мусора, периодическизапускаемая для освобождения памяти, занятой объектами, накоторые уже нет ссылок. Неуправляемые ресурсы должныосвобождаться явно на этапе очистки или, что лучше, передним. Когда сборщик мусора уничтожает страницу, запускаетсясобытие Page.Disposed. На этом жизненный цикл веб-страницызавершен.

Page 21: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 21

Структура страницы

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

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

При первом создании страницы (в ответ на HTTP-запрос) ASP.NETинспектирует файл .aspx. Для каждого обнаруживаемого там элементас атрибутом runat="server" ASP.NET создает и настраивает объектэлемента управления, после чего добавляет этот элемент управления ввиде дочернего элемента управления страницы. Просмотреть вседочерние элементы управления страницы можно в коллекцииPage.Controls.

Page 22: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 22

Класс Page

Все веб-формы, фактически, являются экземплярами класса Page изASP.NET, который находится в пространстве имен System.Web.UI.

Наследование от Page также еще предоставляет коду доступ кследующим полезным свойствам:

• Session

• Application

• Cache

• Request

• Response

• Server

• User

• Trace

Многие из этих свойств соответствуют внутренним объектам, которыеможно было использовать в классических веб-страницах.

Page 23: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 23

Объекты Session, Application и Cache

• Объект Session является экземпляром классаSystem.Web.SessionState.HttpSessionState. Он предназначен дляхранения любого типа пользовательских данных, который должен постоянносуществовать между запросами веб-страниц. Объект Session предоставляетсловарный доступ к набору пар "имя-значение", представляющемупользовательские данные для этого сеанса. Состояние сеанса частоприменяется для обслуживания информации наподобие имени иидентификатора пользователя, покупательской тележки либо другихэлементов, удаляемых, когда пользователь уже не посещает страницы веб-сайта.

• Объект Application является экземпляром классаSystem.Web.HttpApplicationState. Подобно объекту Session, он тожепредставляет собой словарь данных типа "имя-значение". Однако эти данныеявляются глобальными для всего приложения.

• Объект Cache, является экземпляром класса System.Web.Caching.Cache.В нем также хранится глобальная информация, но он предлагает болеемасштабируемый механизм хранения, поскольку ASP.NET может удалятьобъекты в случае нехватки памяти сервера. Как и другие наборы состояний,это, по сути, коллекция объектов "имя-значение", однако здесь для каждогоэлемента можно также устанавливать специализированные политикиистечения срока и определять зависимости.

Page 24: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 24

Объект Request

Объект Request является экземпляром классаSystem.Web.HttpRequest. Этот объект представляет значения исвойства HTTP-запроса, который привел к загрузке страницы. В немсодержатся все параметры, касающиеся URL, а также все остальныеданные, которые были отправлены клиентом.

Свойство Описание

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

ApplicationPath и

PhysicalApplicationPath

ApplicationPath извлекает информацию о местеразмещения виртуального каталога приложенияASP.NET (URL-адрес), a PhysicalPath — о местеразмещения его "реального" каталога

Browser

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

ClientCertificate

Объект HttpClientCertificate, предоставляющийсертификат безопасности для текущего запроса, еслитаковой существует

CookiesПредоставляет коллекцию cookie-наборов,отправляемых с этим запросом

Page 25: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 25

Объект Request

FilePath и

CurrentExecutionFilePa

th

Возвращают реальный путь к файлу (относительно сервера)для выполняемой в данный момент страницы.

FormПредставляет коллекцию переменных формы, обратноотправляемых странице.

Headers и

ServerVariables

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

IsAuthenticated и

IsSecureConnection

Возвращают true в случае успешной аутентификациипользователя и подключения пользователя по протоколузащищенных сокетов (Secure Sockets Layer — SSL)

IsLocalВозвращает true, если пользователь запрашивает страницус локального компьютера

QueryString Предоставляет параметры, переданные в строке запроса

Url и UrlReferrer

Выдают объект Uri, представляющий текущий адресстраницы и страницу, с которой переходит пользователь(предыдущую страницу, содержащую ссылку на даннуюстраницу)

UserAgentСтрока, представляющая тип браузера. Internet Explorerпредоставляет для этого свойства значение MSIE.

Page 26: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 26

Объект Request

UserHostAddress и

UserHostName

Извлекают информацию об IP-адресе и DNS-имениудаленного клиента. К этой информации также можнополучать доступ и через коллекцию ServerVariables. Однакоиз-за трансляции сетевых адресов (Network AddressTranslation — NAT) она не всегда бывает значимой. Взависимости от способа подключения к Интернету, многиеклиенты могут использовать совместно один и тот же IP-адрес (например, IP-адрес шлюзового компьютера). Помимоэтого, IP-адрес также еще может и меняться послевыполнения нескольких запросов

UserLanguages

Предоставляет отсортированный строковый массив, вкотором перечислены языковые предпочтения клиента.Может быть полезно при создании многоязычных страниц

Page 27: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 27

Объект Response

Объект Response является экземпляром классаSystem.Web.HttpResponse и представляет ответ веб-сервера назапрос клиента. При классической ASP-разработке объект Responseбыл единственным способом программной отправки HTML-текстаклиенту.

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

Page 28: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 28

Перемещение между страницами

Самой важной функцией класса HttpResponse является предоставлениенебольшого набора методов, которые позволяют переходить с однойстраницы на другую. Наиболее универсальным из них является методRedirect(), который позволяет перенаправлять пользователя надругую страницу.

// Перенаправление к файлу в текущем каталоге.

Response.Redirect("PageFlow.aspx");

// Перенаправление на другой веб-сайт.

Response.Redirect("http://www.google.com");

Page 29: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 29

Объект Server

Объект Server является экземпляром класса System.Web.HttpServerUtilityи предоставляет вспомогательные методы и свойства.

Метод или свойство Описание

MachineName

Свойство, представляющее имя компьютера, на которомзапускается страница. Это имя веб-сервера,используемого компьютером с целью егоидентификации для остальной части сети

GetLastError()Извлекает объект исключения для самой позднейошибки (или ссылку null, если таковая не существует).

HtmlEncode() и

HtmlDecode()

Заменяет обычную строку строкой допустимых символовHTML (и наоборот)

UrlEncode() и

UrlDecode()

Заменяет обычную строку строкой допустимых символовURL (и наоборот)

MapPath()

Возвращает физический путь к файлу, соответствующийопределенному виртуальному пути к файлу на веб-сервере.

Transfer()

Передает выполнение другой веб-странице в текущемприложении. Этот метод похож на Response.Redirect(),но работает быстрее. Не может применяться дляперемещения пользователя на сайт, расположенный надругом веб-сервере, или же на страницу, отличную отASP.NET (такую как HTML или ASP)

Page 30: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 30

Объекты User и Trace

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

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

Page 31: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 31

Серверные элементы управления ASP.NET

ASP.NET предлагает множество серверных элементов управления,которые делятся на несколько категорий:

• Серверные элементы управления HTML

Это классы, в которых содержатся стандартные HTML-элементы. Заисключением атрибута runat="server" объявление серверныхэлементов управления HTML ничем не отличается от объявлениядругих элементов управления.

Однако в принципе в серверный элемент управления может бытьпреобразован любой дескриптор. Если соответствующего напрямуюкласса нет, ASP.NET будет просто использовать классHtmlGenericControl. Чтобы преобразовать обычный элемент HTML всерверный элемент управления, нужно всего лишь добавить кдескриптору этого элемента атрибут runat="server".

Page 32: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 32

Серверные элементы управления ASP.NET

• Веб-элементы управления

Эти классы дублируют функции базовых HTML-элементов, но обладаютболее согласованным и значащим набором свойств и методов, которыеупрощают их объявление и доступ к ним. В качестве примеров можноназвать элементы управления HyperLink, ListBox и Button.

• Многофункциональные элементы управления

Эти усовершенствованные элементы управления могут генерироватьбольшой объем HTML-разметки и даже клиентский JavaScript-код длясоздания интерфейса. В качестве примеров можно назвать элементыуправления Calendar, AdRotator и TreeView.

Page 33: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 33

Серверные элементы управления ASP.NET

• Элементы управления проверкой достоверности

Этот набор элементов управления позволяет быстро проверятьдостоверность связанного элемента управления ввода на предметсоблюдения нескольких стандартных или пользовательских правил. ВVisual Studio эти элементы управления можно найти на вкладкеValidation в окне Toolbox.

• Элементы управления данными

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

Page 34: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 34

Серверные элементы управления ASP.NET

• Элементы управления навигацией

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

• Элементы управления входом в систему

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

• Элементы управления Web Parts

Этот набор элементов управления поддерживает Web Parts — модельASP NET для построения компонентных, легко конфигурируемых веб-порталов.

Page 35: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 35

Серверные элементы управления ASP.NET

• Элементы управления ASP.NET AJAX

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

• Элементы управления ASP.NET Dynamic Data

Эти элементы управления поддерживают компонент ASP.NET DynamicData, который позволяет создавать управляемые данными веб-сайтыза счет построения гибких шаблонов, а не написания утомительногокода.

Page 36: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 36

Структура элементов управления

Page 37: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 37

Серверные элементы управления

Ссылка на раздел MSDN

Page 38: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 38

Мастер-страницы

Мастер-страницы (главные страницы) ASP.NET позволяют создаватьпоследовательную структуру страниц в приложении. Одна мастер-страницы определяет вид, наполнение и стандартное поведение длявсех страниц (или группы страниц) приложения. Затем можносоздавать отдельные страницы содержимого, включающиесодержимое, которое необходимо отобразить. Когда пользователизапрашивают страницу содержимого, выходная страница представляетсобой сочетание структуры мастер-страницы и содержимого состраницы содержимого.

Мастер-страница представляет собой файл ASP.NET с расширениемMASTER (например MySite.master) с предопределенной структурой,которая может включать статический текст, элементы HTML исерверные элементы управления. Мастер-страница идентифицируетсяпо особой директиве @ Master, которая заменяет директиву @ Page,используемую для обычных страниц ASPX. :

<%@ Master Language="C#" %>

Page 39: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 39

Страницы содержимого

Содержимое для элементов управления — "местозаполнителей" наглавной странице определяется путем создания отдельных страницсодержимого, которыми являются страницы ASP.NET (ASPX-файлы ифайлы с выделенным кодом), связанные с определенной мастер-страницей.

Связывание осуществляется в директиве @Page страницы содержимогопутем включения атрибута MasterPageFile, указывающего наиспользуемую главную страницу. Например, страница содержимогоможет иметь следующую директиву @Page, связывающую ее состраницей Master1.master:

<%@ Page Language="C#"

MasterPageFile="~/MasterPages/Master1.master"

Title="Content Page"%>

На странице содержимого содержимое создается путем добавленияэлементов управления Content и сопоставления их с элементамиуправления ContentPlaceHolder на мастер-странице.

Page 40: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 40

Страницы содержимого

Page 41: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 41

Преимущества мастер-страниц

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

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

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

• Мастер-страницы предоставляют объектную модель,позволяющую настроить главную страницу из отдельных страницсодержимого.

Page 42: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 42

Поведение мастер-страниц во время выполнения

Во время выполнения главные страницы обрабатываются в следующейпоследовательности:

• Пользователи отправляют запрос на страницу путем вводаURL-адреса страницы содержимого.

• Когда страница извлекается, происходит чтение директивы@Page. Если директива ссылается на мастер-страницу, такжевыполняется чтение мастер-страницы. При первом запросе на этистраницы выполняется компиляция обеих страниц.

• Мастер-страница с обновленным содержимым объединяется сдеревом управления страницы содержимого.

• Содержимое отдельных элементов управления Contentобъединяется с соответствующим элементом управленияContentPlaceHolder на главной странице.

• Получившаяся в результате объединения страницаотображается в веб-обозревателе.

Page 43: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 43

Создание проекта ASP.NET

Page 44: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 44

Проект ASP.NET

Page 45: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 45

Редактор кода

Page 46: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 46

Мастер-страница

Page 47: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 47

Мастер-страница

Page 48: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 48

Сайт с мастер-страницей и без

Page 49: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 49

Страница с постбеком и без

Page 50: C# Web. Занятие 05

http://www.slideshare.net/IgorShkulipa 50

Лабораторная работа №5.

Выполнить задание Лабораторной работы №1 с использованием MicrosoftASP.NET Web Forms.