Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Разработка Web-приложений ASP.NET 2.0 в Visual Studio.NET 2005
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

8. Создание пользовательских элементов управления

Пользовательские элементы управления в ASP.NET 2.0, страницы .ascx, повторное использование кода HTML

В ASP.NET в добавление к встроенным элементам управления, которые мы уже рассмотрели, вы можете также создавать пользовательские элементы управления.

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

У ПЭУ в ASP.NET - всегда расширение .ASСX. Они очень похожим на обычные Web-страницы (Web-формы): в них есть код HTML, который можно редактировать, и программный код на страницах codebehind. Они точно также компилируются при первом обращении к ним. Главное отличие - к страницам ПЭУ нельзя обращаться из броузера напрямую (это просто запрещено в ASP.NET по соображениям безопасности) - только через обычные страницы, на которых они размещены. В ПЭУ нет тегов <HEAD>, <BODY> и <FORM>. Событийные процедуры (в том числе Page_Load) работают для них как обычно.

Страница codebehind определяется в ПЭУ не тегом @Page, как на обычной странице, а в теге @Control, например:

<%@ Control Language="vb" Codebehind="WebUserControl1.ascx.vb"

Inherits="test.WebUserControl1" %>

В теге @Control поддерживаются те же атрибуты, что и в @Page, за исключением AspCompat и Trace. Трассировка для ПЭУ включается на уровне страницы, на которую он помещен.

Главное назначение ПЭУ - повторное использование кода. Обычные примеры применения - колонтитулы для страниц, navigation bars, другие повторяющиеся блоки кода.

В обычном ASP для подобных ситуаций использовались конструкции Include. ПЭУ призваны заменить их в ASP.NET.

Преимущества ПЭУ:

·        ПЭУ - self-contained (сами в себе), то есть имена переменных, методов и свойств конфликтовать не будут;

·        на одной обычной странице один и тот же ПЭУ может использоваться многократно без каких-либо проблем и конфликтов;

·        в ПЭУ и обычной странице могут использоваться разные языки для кода.

ПЭУ нельзя использовать в другом Web-приложении (вначале нужно его скопировать). Если нужно реализовать повторное использование кода в разных Web-приложениях, нужно создавать Web custom controls. Они пишутся намного сложнее, и, в частности, в дизайнере их создать нельзя - только через код. В этом курсе они рассматриваться не будут.

Разместить ПЭУ можно на любой обычной Web-странице ASP.NET. Страница, на которой размещен ПЭУ, по отношению к этому ПЭУ называется хост-страницей.

Чтобы разместить ПЭУ на хост-странице, его вначале нужно зарегистрировать на этой странице при помощи директивы @Register. Эта директива может выглядеть так:

<%@ Register TagPrefix="demo" TagName="validNum"

 Src="numberbox.ascx" %>

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

TagName - уникальное имя этого типа ПЭУ.

Src - путь к ПЭУ (от корня Web-приложения).

После регистрации ПЭУ можно добавлять на Web-страницу как обычные элементы управления:

<demo:validNum id="num1" runat="server"/>

<demo:validNum id="num2" runat="server"/>

В данном случае добавлено два ПЭУ одного типа validNum.

Как добраться до свойств ПЭУ в событийных процедурах хост-страницы? Вначале нужно объявить переменную для этого ПЭУ на хост-странице:

Protected num1 As numberbox

numberbox должно соответствовать типу ПЭУ, а имя переменной (num1) - должно быть точно таким же, как его ID в теге помещения элемента на страницу.

Далее можно получать значения свойств:

lblSum.Text = (num1.pNum + num2.pNum).ToString()

или их присваивать:

num1.pNum = 5

Создать ПЭУ можно с нуля или можно преобразовать в ПЭУ существующую Web-страницу.

С нуля создать очень просто: в контекстном меню для проекта выбрать Add -> Add Web User Control и определить имя для ПЭУ. Затем - добавляем, как на обычную страницу элементы управления и определяем для них событийные процедуры. А затем - этап, уникальный для ПЭУ: нужно создать свойства, которые будут использоваться для взаимодействия с Web-страницей. Например, для создания свойства, которое позволит хост-странице считывать и устанавливать значение текстового поля txtNum в ПЭУ, код может быть таким:

Public Property pNum() As Integer

 Get

   Return CInt(txtNum.Text)

 End Get

  Set(ByVal Value As Integer)

   txtNum.Text = Value.ToString()

 End Set

End Property

Свойство ПЭУ, доступное для хост-страницы, будет называться pNum.

Точно также создаются Public методы в ПЭУ (они будут доступны из хост-страницы как методы соответствующего объекта).

Для конвертации существующей Web-страницы надо:

1) убрать из нее теги <HTML>, <BODY> и <FORM>.

2) Заменить директиву @Page на @Control. Проверить, что нет атрибутов, которые не поддерживаются в @Control.

3) добавить атрибут ClassName в директиву @Control (этот атрибут позволит обращаться к ПЭУ из хост-странице как к объекту класса с именем, указанным в этом атрибуте).

4) переименовать страницу, поменяв расширение *.aspx на *.ascx.

 

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 
© 2004-2008, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru