Перейти к содержимому

Runat server что это

  • автор:

Типы серверных элементов управления

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

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

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

Это классы, в которых содержатся стандартные HTML-элементы. За исключением атрибута runat=»server» объявление серверных элементов управления HTML ничем не отличается от объявления других элементов управления. Двумя наиболее яркими представителями серверных элементов управления являются HtmlAnchor (представляющий дескриптор ) и HtmlSelect (представляющий дескриптор ).

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

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

Эти классы дублируют функции базовых HTML-элементов, но обладают более согласованным и значащим набором свойств и методов, которые упрощают их объявление и доступ к ним. В качестве примеров можно назвать элементы управления HyperLink, ListBox и Button. Более того, несколько других типов элементов управления ASP.NET (такие как многофункциональные элементы управления и элементы управления проверкой достоверности) часто считаются особыми типами веб-элементов управления. В Visual Studio вы найдете базовые элементы управления на вкладке Standard (Стандартные) в окне Toolbox (Панель инструментов).

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

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

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

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

Если проверка достоверности не проходит, вы можете предотвратить обработку страницы или позволить этим элементам управления отображать сообщения об ошибках на странице. В Visual Studio эти элементы управления можно найти на вкладке Validation (Проверка достоверности) в окне Toolbox.

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

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

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

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

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

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

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

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

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

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

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

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

Иерархия серверных элементов управления

Все серверные элементы управления унаследованы от базового класса Control из пространства имен System.Web.UI. Это верно при использовании серверных элементов управления HTML, применении веб-элементов управления или создании собственных специальных элементов управления. Это также относится к классу Page, от которого происходят все формы.

На рисунке ниже показаны основные ветви этой цепочки наследования:

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

Поскольку все элементы управления происходят от базового класса Control, у вас имеется базовый общий знаменатель, который можно использовать для манипулирования элементом управления на странице, даже если определенный тип элемента управления неизвестен. (Например, этот прием можно применять для циклического прохода по всем элементам управления страницы и сокрытия каждого из них установкой свойства Visible равным false.) В следующей таблице перечислены наиболее часто используемые члены класса Control:

Свойства и методы класса Control

Свойство или метод Описание
ClientID Возвращает идентификатор элемента, который является уникальным именем, созданным ASP.NET при построении экземпляра страницы
Controls Возвращает коллекцию дочерних элементов управления. Коллекция Page.Controls может применяться для извлечения высокоуровневой коллекции элементов управления на странице. Каждый элемент управления в коллекции Controls может содержать собственные дочерние элементы управления, которые, в свою очередь, могут содержать еще какие-то элементы управления, и т.д.
EnableViewState Возвращает или устанавливает булевское значение, указывающее на то, должен ли элемент управления поддерживать свое состояние с помощью обратных отправок родительской страницы. По умолчанию имеет значение true
ID Возвращает или устанавливает идентификатор элемента управления. На практике это имя, с помощью которого вы можете получить доступ к элементу управления из серверных сценариев или класса отделенного кода
Page Возвращает ссылку на объект страницы, в которой содержится элемент управления
Parent Возвращает ссылку на родителя элемента управления, которым может быть страница или другой контейнерный элемент управления
Visible Возвращает или устанавливает булевское значение, указывающее на то, нужно ли генерировать элемент управления. Если равно false, то элемент управления не просто делается невидимым для клиента, но даже не генерируется соответствующий HTML-дескриптор
DataBind() Связывает элемент управления и все дочерние элементы управления с определенным источником данных или выражением
FindControl() Ищет дочерний элемент управления с определенным именем в текущем элементе управления и всех содержащихся в нем элементах. Если дочерний элемент найден, метод возвращает ссылку на общий тип Control, который затем можно привести к соответствующему типу
HasControls() Возвращает булевское значение, указывающее на наличие у элемента управления дочерних элементов управления. Чтобы содержать дочерние элементы, элемент управления должен быть дескриптором контейнера (например, )
RenderControl() Записывает вывод HTML для элемента управления на основе его текущего состояния. Этот метод не вызывается напрямую; вместо этого ASP.NET вызывает его при генерации страницы

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

Аннотация: Серверные HTML-дескрипторы. Программная установка свойств серверных HTML-дескрипторов. Программное создание серверных HTML-дескрипторов. События серверных HTML-элементов. Обработка событий ServerClick и ServerChange. Web-элементы управления. Базовый класс WebControl. Программное управление свойствами Web-элементов управления. Обработка события Changed. Списковые Web-элементы управления. Элементы проверки достоверности (валидаторы). Элемент RequiredFieldValidator. Элемент CompareValidator. Элемент RangeValidator.

Файлы к лекции Вы можете скачать здесь

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

Чтобы элемент управления был серверным, он должен иметь в дескрипторе HTML -представления атрибут runat=»server» . Только при этом условии среда исполнения ASP.NET при загрузке страницы создаст для него объект (экземпляр соответствующего класса) и позволит программно управлять этим объектом. В противном случае HTML — дескриптор будет отправлен клиенту без соответствующей обработки.

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

Современные серверные элементы управления с вкладки Standard панели инструментов Toolbox в своем HTML -представлении обязаны содержать атрибут runat=»server» , в то время как в случае применения элементов управления с вкладки HTML разработчик волен сам распоряжаться свойством их серверности. Назначение элемента HTML серверным можно выполнить прямой вставкой атрибута runat=»server» в дескриптор элемента или через контекстное меню для этого элемента выполнением команды Run As Server Control

Группы элементов управления по их назначению распределены в Visual Studio 2005 по вкладкам, перечислим основные из них:

  1. Standard — серверные элементы управления с развитой функциональностью и программным управлением. Среди них имеются полнофункциональные элементы управления, выполняющие генерацию сложного HTML-кода и клиентских сценариев JavaScript для создания интерфейса на клиенте. Это такие элементы как Calendar, AdRotator, TreeView. Их называют серверными Web-элементами управления. Они способны генерировать несколько HTML-дескрипторов. Они даже способны сами запрашивать и определять тип броузера клиента и автоматически подстраивать под эти возможности свой рендеринг (HTML-вывод)
  2. HTML — типовые HTML-элементы (представляются типовыми HTML-дескрипторами), но с преобразованием их в серверные допускают программное управление и самостоятельную генерацию клиентской HTML-разметки. Их называют серверными HTML-элементами управления. Они способны генерировать только один HTML-дескриптор и оставлены для совместимости с ранней технологией ASP
  3. Validation — элементы управления проверкой достоверности. Этот набор элементов управления позволяет быстро проверить достоверность связанного элемента управления ввода на предмет соблюдения нескольких стандартных или пользовательских правил. Например, мы можем указать, что ввод не может быть пустым, что это должно быть число, что оно должно находиться в определенных пределах, и т.д. В случае нарушения таких условий можно отменить принятие данных, отобразить сообщение для пользователя, направить на другую страницу для ликвидации безграмотности или покояния, наконец, — послать куда-нибудь.
  4. Data — элементы управления данными . Они позволяют управлять источниками данных с привязкой декларативно, через свойства, без написания дополнительного кода . Имеются, также, элементы отображения больших объемов данных в требуемом формате, с поддержкой дополнительных настроек наподобие возможности редактирования, сортировки, разбиения на страницы.
  5. Navigation — элементы управления навигацией. Они позволяют пользователю перемещаться с одной страницы на другую, отображают карту сайта и др.
  6. Login — элементы управления входом в систему. Эти элементы управления поддерживают аутентификацию пользователя с помощью форм с хранением хэшированных (закодированных) сведений в базе данных и отслеживанием их состояния. Вместо написания своих собственных интерфейсов для работы с аутентификацией можно использовать готовые решения с настройкой страниц входа в систему , восстановления паролей и мастеров создания новых пользователей.
  7. WebParts — элементы управления для построения компонентных, легко конфигурируемых Web-порталов (больших сайтов).
  8. Mobile Web Forms — элементы управления для поддержки мобильных клиентов. Эту вкладку (как и много других) можно получить, если вызвать на панели Toolbox контекстное меню и выполнить команду Show All. Мобильные элементы управления обладают высокой степенью адаптации . При создании страницы с использованием этих элементов страница может генерировать HTML-разметку в зависимости от типа запросившего ее устройства. Это может быть стандарт HTML 3.2, WML 1.1, XHTML или HTML 4.01, включая код JavaScript — в зависимости от возможностей броузера мобильного клиента.

Серверные HTML-дескрипторы

Ранее мы говорили, что любому дескриптору HTML можно присвоить атрибут runat=»server» . И система проектирования — при разработке страницы, и среда исполнения — после компиляции, сразу поставят ему в соответствие свой поддерживающий класс из библиотеки .NET Framework 2.0. А это значит, что таким элементом можно будет программно управлять. Нам, как программистам, страждущим управлять элементами управления, важно знать свойства и методы поддерживающих их библиотечных классов, с использованием которых и возможно программное управление.

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

Все серверные элементы управления имеют в качестве одного из своих предков класс System.Web.UI.Control . Этот факт можно использовать для манипулирования элементом управления на странице даже в случае, если его конкретный тип неизвестен. Следующий в цепочке наследования серверных HTML -элементов является класс System.Web.UI.HtmlControls.HtmlControl . Ниже на рисунке приведено дерево наследования серверных HTML -элементов

Показанные на рисунке классы имеют следующее соответствие с дескрипторным представлением

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

Серверный дескриптор HTML Поддерживающий класс
HtmlAnchor
button runat=»server»> HtmlButton
HtmlForm
img runat=»server»> HtmlImage
input type keyword50″> button » runat=»server»> HtmlInputButton
input type keyword52″> reset » runat=»server»> HtmlInputReset
input type keyword54″> submit » runat=»server»> HtmlInputSubmit
input type keyword56″> checkbox » runat=»server»> HtmlInputCheckBox
input type=»file» runat=»server»> HtmlInputFile
input type keyword59″> hidden » runat=»server»> HtmlInputHidden
input type keyword61″> image » runat=»server»> HtmlInputImage
input type keyword63″> radio » runat=»server»> HtmlInputRadioButton
input type=»text» runat=»server»> HtmlInputText
input type=»password» runat=»server»> HtmlInputPassword
HtmlSelect
HtmlTable
HtmlTableRow
,

HtmlTableCell
textarea runat=»server»> HtmlTextArea
Для всех других дескрипторов HTML с атрибутом runat=»server» HtmlGenericControl

Большинство атрибутов дескрипторов серверных элементов управления явно прописаны в одноименных свойствах поддерживающих классов. Но если мы собираемся программно установить значения атрибутов, не представленных никакими свойствами, то нужно воспользоваться свойством-коллекцией Attributes , которую предоставляет всем HTML -элементам базовый для них класс HtmlControl . Эта коллекция представляет собой словарь, в котором атрибуты представлены парами атрибут(ключ)=значение, включая события.

Продемонстрируем программное управление серверными HTML -дескрипторами на примерах.

Пример программной установки свойств серверных HTML-дескрипторов

  • Создайте новую страницу с отделенным кодом и именем PropertiesControl и сделайте ее стартовой
  • Из вкладки HTML панели Toolbox поместите на страницу элемент Input (Text) и сделайте его серверным командой контекстного меню Run As Server Control. Проследите, что на элементе появился маркер с зеленой стрелкой.
  • Задайте элементу имя TextBox1
  • Откройте на редактирование файл скрытого кода, выполнив на странице команду контекстного меню View Code, и введите в обработчик события Page_Load() следующий код
public partial class PropertiesControl : System.Web.UI.Page < protected void Page_Load(object sender, EventArgs e) < // Выполнять инициализацию только при первой загрузке страницы // Далее информация будет отслеживаться в состоянии вида if (!Page.IsPostBack) < // Установить атрибуты стиля для настройки внешнего вида TextBox1.Style["font-size"] = "20px"; TextBox1.Style["color"] = "red"; // Использовать слегка отличающийся, но эквивалентный синтаксис TextBox1.Style.Add("background-color", "yellow"); // Установить текст по умолчанию TextBox1.Value = "Введите здесь адрес электронной почты"; // Установить другие нестандартные атрибуты через коллекцию TextBox1.Attributes["onfocus"] = "alert(TextBox1.value)"; >> >

Результат должен получиться примерно таким

Все наши программные настройки элемента Input (Text) превратятся на клиенте в следующий HTML-код

Показанный в примере доступ к атрибутам серверных HTML -дескрипторов является, по сути, одинаковым для всех элементов.

Пример программного создания серверных HTML-дескрипторов

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

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

  • Добавьте к приложению новую страницу с раздельным кодом и именем DynamicTable и сделайте ее стартовой Сейчас созданная страница пустая. Наша задача динамически создать таблицу с пятью строками и четырьмя столбцами, установить их цвета и текст и все это отослать клиенту.
public partial class DynamicTable : System.Web.UI.Page < protected void Page_Load(object sender, EventArgs e) < // Создаем объект заголовка, настраиваем // и добавляем к объекту-странице HtmlGenericControl header = new HtmlGenericControl(); header.InnerHtml = "

Динамическая
таблица

"; header.Style["color"] = "red"; this.Controls.Add(header); // Создаем объект-таблицу HtmlTable HtmlTable table1 = new HtmlTable(); // Установим свойства таблицы table1.Border = 1; // Толщина внешней рамки table1.CellPadding = 3; // Отступ содержимого ячейки от рамки table1.CellSpacing = 3; // Зазор между линиями рамки table1.BorderColor = "red"; // Цвет линий рамки // Объявляем вспомогательные ссылки на строки и столбцы таблицы HtmlTableRow row; HtmlTableCell cell; int maxRow = 5, maxCell = 4; for (int i = 1; i " + "Cell: " + j.ToString(); // Добавляем ячейку к текущей строке row.Cells.Add(cell); > // Добавляем строку к таблице table1.Rows.Add(row); > // Добавляем таблицу к странице this.Controls.Add(table1); > >

События серверных HTML-элементов

Большинство серверных HTML -элементов в информации, прибывшей на сервер с обратной отсылкой, распознают события, которые произошли с их HTML -представлением на стороне клиента. В основном это два события:

  1. События щелчка — ServerClick
  2. События изменения — ServerChange

Событие ServerClick отображает щелчок, происшедший на стороне клиента, но обрабатываемый на стороне сервера. В обработчике этого события можно переопределить ожидаемое поведение, например, прервать отсылку e-mail при обнаружении ошибки в адресе, проверить полномочия и т.д.

Событие ServerChange генерируется при внесении изменений в текстовое поле или элемент выбора. При поступлении на сервер обратной отсылки ( постинга ) для каждого измененного элемента управления генерируется событие ServerChange . Самым последним в цепочке событий генерируется событие ServerClick кнопки, инициировавшей постинг.

В таблице показано, какие элементы управления поддерживают событие ServerClick , а какие — событие ServerChange .

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

В следующих разделах вы узнаете о серверных элементах управления HTML, определенных в пространстве имен System.Web.UI.HtmlControls. В целом существует около двух десятков отдельных классов серверных элементов управления HTML. Они разбиты на отдельные категории на основе того, являются они элементами управления вводом (в этом случае они унаследованы от HtmlInputControl) или же могут содержать другие элементы управления (тогда они являются производными от HtmlContainerControl).

На рисунке ниже показана иерархия наследования:

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

Класс HtmlControl

Все серверные элементы управления HTML являются производными от базового класса HtmlControl. Ниже перечислены свойства, добавленные классом HtmlControl к базовому классу Control:

Свойства класса HtmlControl

Свойство Описание
Attributes Позволяет читать и добавлять атрибуты дескриптора элемента управления. Эту коллекцию можно использовать для добавления атрибутов, не предоставляемых определенными свойствами. (Например, можно добавить атрибут onFocus к текстовому полю и указать какой-то JavaScript-код для настройки того, что будет происходить в результате передачи фокуса текстовому полю.)
Disabled Возвращает или устанавливает состояние доступности элемента управления. При значении true элемент управления становится неактивным
Style Возвращает коллекцию применяемых к элементу управления атрибутов CSS. В веб-странице значение этого свойства имеет вид разделенного точками с запятой списка атрибутов стиль:значение. В Visual Studio указать такое значение можно, щелкнув правой кнопкой мыши на элементе управления в режиме визуального конструктора и выбрав в контекстном меню пункт New Style (Новый стиль)
TagName Возвращает имя дескриптора элемента управления, например, a, img и т.п.

Класс HtmlContainerControl

Любой HTML-дескриптор, который имеет открывающий и закрывающий дескрипторы, может содержать другое содержимое либо элементы управления HTML. В качестве примера можно привести дескриптор ссылки, который обычно заключает текст или изображение в пару .. .. Многие другие HTML-дескрипторы также работают как контейнеры, включая все, начиная с (форматирует блок или содержимое) и заканчивая скромным дескриптором (выделяет текст полужирным начертанием). Эти дескрипторы не отображаются на определенные классы элементов управления HTML, но все же могут использоваться с атрибутом runat=»server». В этом случае вы взаимодействуете с ними через класс HtmlGenericControl, который, в свою очередь, является производным от HtmlContainerControl.

Для поддержки включения класс HtmlContainerControl добавляет два свойства:

InnerHtml

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

InnerText

Возвращает или устанавливает текст внутри открывающего и закрывающего дескрипторов. При использовании этого свойства все символы, интерпретируемые как специальный синтаксис HTML (вроде угловой скобки <), автоматически заменяются эквивалентными HTML-сущностями.

Класс HtmlInputControl

Элементы управления вводом HTML обеспечивают взаимодействие с пользователем. К ним относятся знакомые графические элементы управления — флажки, текстовые поля, кнопки и окна со списком. Все эти элементы управления генерируются с помощью дескриптора . Атрибут type указывает тип элемента управления вводом, как в (текстовое поле), (кнопка Submit (Отправить)), (элементы управления для загрузки файла).

Серверные элементы управления вводом являются производными от HtmlInputControl, который добавляет следующие свойства:

Type

Предоставляет тип HtmlInputControl. Например, если это свойство установлено в text (текст), HtmlInputControl является текстовым полем для ввода данных.

Value

Извлекает либо устанавливает значение, связанное с элементом управления вводом. Значение, ассоциированное с элементом управления, зависит от типа элемента управления. Например, в текстовом поле это свойство хранит текст, введенный в элементе управления. Для кнопок оно соответствует тексту кнопки.

Классы серверных элементов управления HTML

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

Классы серверных элементов управления HTML

Объявление дескриптора Класс .NET Специфичные члены
HtmlAnchor HRef, Target, Title, Name, событие ServerClick
HtmlButton CausesValidation, ValidationGroup, событие ServerClick
HtmlForm Enctype, Method, Target, DefaultButton, DefaultFocus
HtmlImage Align, Alt, Border, Height, Src, Width
HtmlInputButton Type, Value, CausesValidation, ValidationGroup, событие ServerClick
HtmlInputReset Type, Value
HtmlInputSubmit Type, Value, CausesValidation, ValidationGroup, событие ServerClick
HtmlInputCheckBox Checked, Type, Value, событие ServerClick
HtmlInputFile Accept, MaxLength, PostedFile, Size, Type, Value
HtmlInputHidden Type, Value, событие ServerChange
HtmlInputImage Align, Alt, Border, Src, Type, Value, CausesValidation, ValidationGroup, событие ServerClick
HtmlInputRadioButton Checked, Type, Value, событие ServerChange
HtmlInputText MaxLength, Type, Value, событие ServerChange
HtmlInputPassword MaxLength, Type, Value, событие ServerChange
HtmlSelect Multiple, SelectedIndex, Size, Value, DataSource, DataTextField, DataValueField, Items (коллекция), событие ServerChange
HtmlTableCell Align, BgColor, BorderColor, ColSpan, Height, NoWrap, RowSpan, VAlign, Width
HtmlTableRow Align, BgColor, BorderColor, Height, VAlign, Cells (коллекция)
HtmlTextArea Cols, Rows, Value, событие ServerChange
,

HtmlTable Align, BgColor, Border, BorderColor, CellPadding, Cellspacing, Height, Width, Rows (коллекция)
Любой другой дескриптор HTML с атрибутом runat=»server» HtmlGenericControl Отсутствуют

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

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

Установка атрибутов стилей и других свойств

В следующем примере демонстрируются варианты настройки стандартного элемента управления HtmlInputText (который представляет дескриптор ). Для чтения или установки текущего текста в текстовом поле применяется свойство Value. Чтобы сконфигурировать стили, необходимо с помощью коллекции Style добавить новые атрибуты стиля CSS. И, наконец, если нужно установить другие атрибуты, не представленные никакими свойствами, следует использовать коллекцию Attributes.

В предлагаемом примере коллекция Attributes применяется для ассоциирования с клиентским событием onfocus элемента управления простого кода JavaScript (отображающего окно предупреждения с текущим значением текстового поля):

protected void Page_Load(object sender, EventArgs e) < // Выполнить инициализацию, только если страница запрашивается впервые. // После этого данная информация отслеживается в состоянии представления if (!IsPostBack) < // Установить атрибуты стиля для настройки внешнего вида страницы TextBox1.Style["font-size"] = "20px"; TextBox1.Style["color"] = "red"; // Использовать немного отличающийся, но эквивалентный // синтаксис для установки атрибута стиля TextBox1.Style.Add("background-color", "lightyellow"); // Установить текст, отображаемый по умолчанию TextBox1.Value ; // Установить другие нестандартные атрибуты. TextBox1.Attributes["onfocus"] = "alert(TextBox1.value);"; >>

Если запросить эту страницу, для текстового поля возвращается следующий HTML-код:

Атрибут стиля CSS может также содержать информацию, которая не была явно установлена в коде. Например, если изменить размер элемента управления вводом в визуальном конструкторе Visual Studio, к используемому стилю будут добавлены свойства высоты (height) и ширины (width). Эти детали затем появятся и в окончательном HTML-коде.

На рисунке показано, как будет выглядеть приведенная страница при наведении фокуса на текстовое поле:

Тестирование серверных элементов управления HTML

Описанный процесс взаимодействия, по сути, выглядит одинаково для всех серверных элементов управления HTML. Свойства стилей и атрибуты всегда устанавливаются одинаково. Единственное отличие состоит в том, что некоторые элементы управления предоставляют дополнительные свойства. Например, элемент управления HtmlAnchor предоставляет свойство HRef, позволяющее устанавливать целевую страницу для ссылки.

Программное создание серверных элементов управления

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

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

protected void Page_Load(object sender, EventArgs e) < // Создать новый объект HtmlTable HtmlTable table1 = new HtmlTable(); // Установить свойства форматирования таблицы table1.Border = 1; table1.CellPadding = 3; table1.CellSpacing = 3; table1.BorderColor = "red"; // Начать добавлять содержимое в таблицу HtmlTableRow row; HtmlTableCell cell; for (int i=1; iCell: " + j.ToString(); // Добавить ячейку в текущую строку row.Cells.Add(cell); > // Добавить строку в таблицу table1.Rows.Add(row); > // Добавить таблицу внутрь страницы this.Controls.Add(table1); >

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

Как за час создать сайт на ASP.NET

Что делать, если сайт нужен был вчера, но писать его еще даже не начали? Самое время воспользоваться ASP.NET Web Forms!

Евгений Кучерявый

Евгений Кучерявый

Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.

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

Рассказываем, как это сделать, шаг за шагом.

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

Для начала создайте проект ASP.NET:

Затем укажите его имя:

А потом выберите модель Web Forms:

Как только Visual Studio подготовит шаблон проекта, его можно будет запустить, чтобы проверить. Для этого нажмите кнопку IIS Express:

Visual Studio скомпилирует все файлы, запустит сайт и откроет его в браузере по умолчанию. Если сайт не открылся, на него можно перейти самостоятельно. Для этого в трее найдите иконку IIS Express и посмотрите там адрес сайта. Он должен быть примерно таким: http://localhost:5000 (цифры в конце могут отличаться).

Вот как выглядит шаблон сайта:

Тут уже есть несколько страниц и немного стилей. Каждая страница состоит из трех файлов:

  • Page.aspx. Файл с HTML-кодом страницы.
  • Page.aspx.cs. Класс, который отвечает за логику работы страницы.
  • Page.aspx.designer.cs. Класс, который служит прослойкой между HTML и C#.

Вот как выглядит About.aspx этого проекта:

Будет создана страница с таким кодом:

Если ее вывести, то пользователь увидит текст «Hello, World!», а не жирный шрифт. Чтобы передать в HTML-код строку вместе с тегом, нужно использовать не обычный тип string, а HtmlString:

Теперь можно создать класс для получения данных из СУБД:

Заключение

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

  • о внешнем виде;
  • ограничении количества выводимых статей;
  • админской панели;
  • наполнении страниц и других важных вещах.

Читайте также:

  • Как работает .NET и зачем он нужен
  • GNU Emacs: как текстовый редактор из 1980-х учит программистов ценить свободное ПО
  • Не Windows единой: как писать кроссплатформенные приложения с GUI на C#

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *