Модель програмування ASP.NET Web Forms

ASP.NET Web Forms – это механизм, который работает на базе общей среды исполнения ASP.NET и встроен в поставку ASP.NET начиная с самой первой версии. Механизм веб-форм предполагает построение веб-приложений аналогично настольным приложениям.

Как известно, результат работы веб-приложения – это код HTML, который передается клиенту. Обычно HTML-код страницы веб-приложения содержит различные элементы, которые позволяют управлять процессом работы приложения – например, кнопки, поля ввода, переключатели и т.д. Эти элементы управления можно описать на языке HTML. Например, можно создать небольшую форму на языке HTML, как показано ниже.

При попытке открыть подобный HTML-код в браузере можно увидеть следующую несложную форму.

Рисунок 4.1 - Пример Web-формы

После того, как в поля ввода ввести какие-либо значения и нажать кнопку отправки информации на сервер, браузером будет сгенерирован HTTP-запрос методом POST, в котором тело запроса будет содержать строку вида:

FirstName=Ivan&LastName=Petrov&CS=on

 

Как видно, в теле запроса содержатся параметры, которые присутствуют на форме – строки и флажки. Несмотря на тип каждого параметра, все они передаются в виде строкового значения. Например, состояние флажка "C#" передается как "CS=ON". Поэтому для считывания состояния этого элемента управления можно использовать следующий код.

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

Подход ASP.NET Web Forms для решения этой проблемы предлагает ввести понятие элемента управления в структуру страницы. Элемент управления ASP.NET Web Forms – это объект .NET Framework, который является наследником базового класса Control и который реализует в себе логику какого-либо элемента на странице. При этом этот объект берет на себя обязательства по генерации собственного HTML-представления, обработке параметров HTTP-запроса и другие операции, связанные с этим элементом. Таким образом, можно сказать, что элемент управления ASP.NET Web Forms является аналогом элемента управления настольного приложения. Платформа ASP.NET уже содержит ряд стандартных, наиболее часто используемых элементов управления, таких как кнопка, поле ввода, переключатели и т.д. Предыдущий пример можно переписать следующим образом.

Как видно, вместо стандартного описания элементов HTML используются объекты ASP.NET. Эти объекты отличает наличие префикса "asp" в названии тега, а также атрибута "runat="server"", который говорит среде исполнения о том, что этот тег является серверным элементом управления. При обращении к веб-форме с таким описанием мы получим аналогичное представление.

Рисунок 4.2 - ASP.NET Web Forms

 

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

Как видно из этого примера, у элемента управления CheckBox доступно свойство Checked, которое имеет тип bool. В данном случае не требуется всегда работать со строками, поскольку каждый элемент управления содержит типизированные свойства.

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

Для отправки данных на сервере в рамках веб-формы используется механизм обратного вызова - Postback. При обратном вызове выполняется обращение к веб-серверу в виде HTTP-запроса методом POST, в составе которого передаются данные серверу.

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

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

Элемент управления Calendar представляет собой сложный объект, который выполняет работу по генерации кода HTML на странице в зависимости от выбранной даты. Для размещения этого элемента управления на форме используется несложный код разметки страниц ASP.NET (.aspx).

После запуска приложения и отображения данной страницы, в браузере можно увидеть полноценный календарь. При этом элемент управления генерирует ссылки на управление календарем – для переключения года и месяца, а также для выбора даты( рис.4.3).

 

Как видно, за небольшим определением календаря в странице ASPX скрывается достаточно сложная логика по генерации и управлению календарем. Если проанализировать объем сгенерированного кода HTML, то можно увидеть, что он располагается более чем на 200 строках и содержит определение таблицы для размещения календаря.

 

 

Рисунок 4.3 – Элемент управления Calendar

 

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

 

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

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

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

Все элементы управления размещаются на страницах ASP.NET Web Forms. Страница ASP.NET Web Forms представляется объектом Page и является контейнером для элементов управления. Страница управляет генерацией HTML-кода, который в результате будет передан клиенту. При этом объект Page содержит набор методов, свойств и событий для управления поведением страницы. Следующий пример, использует свойство страницы Title, а также подписывается на ряд событий страницы.

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

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

Результатом работы веб-приложения является HTML-код страницы. Для генерации HTML-кода в страницах ASP.NET Web Forms в основном используются специальные объекты .NET–элементы управления. Такие элементы управления содержат набор свойств и методов для управления состоянием этих объектов. Все элементы управления размещаются в контейнере – странице ASP.NET. Для определения поведения всей страницы в целом разрабатывается код, который настраивает взаимодействие элементов управления на странице.

 

Модель зворотного виклику

Платформа ASP.NET Web Forms, по аналогии с разработкой настольных приложений, содержит модель событий, которые генерируются каждый раз при обработке страницы. Элементы страницы также содержат ряд событий, которые можно использовать для построения своего приложения. Однако, нужно четко понимать, что при работе веб-приложения код страницы генерируется на сервере, а отображается на клиенте. Поэтому необходим механизм, который, например, при нажатии кнопки на клиентской стороне уведомит об этом сервер для того, чтобы последний мог сгенерировать событие и обработать его. По этой причине, при нажатии на кнопку, страница формирует HTTP-запрос к серверу и отправляет данные с помощью метода POST на сервер. В этом случае сервер может понять, что форма инициировала взаимодействие с ним и сгенерировать и обработать нужную последовательность действий.

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

 

Рисунок 4.4 – Процесс обработки события элемента управления

 

Процесс отправки данных на эту же страницу и обработки данных на сервере называется моделью обратного вызова (postback).

Для того, чтобы описанный выше процесс смог выполнятся, страница в ASP.NET Web Forms представляет собой большую HTML-форму. Это учитывается при генерации исходного HTML-кода страницы, и все элементы страницы заключены в тег <form>.

 

 

Эта форма всегда указывает на саму себя и использует метод POST. Использование именно этого HTTP-метода обусловлено тем, что в этом случае все данные будут отправлены на сервер в теле HTTP-запроса, что удобно при наличии большого количества элементов управления на странице. Страница ASP.NET Web Forms не может содержать еще дополнительные HTML-формы – все взаимодействия с сервером выполняются в рамках приведенной выше формы.

Для выполнения обратного вызова в составе страницы присутствуют дополнительные элементы – скрытые поля "__EVENTTARGET" и "__EVENTARGUMENT", а также функция на языке 11-86408.php"> ⇐ Назад

  • 1
  • 234
  • 5
  • 6
  • 7
  • Далее ⇒
  •