@ Register

Обновлен: Ноябрь 2007

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

<%@ Register tagprefix="tagprefix"
   namespace="namespace"
   assembly="assembly" %>
<%@ Register tagprefix="tagprefix"
   namespace="namespace" %>
<%@ Register tagprefix="tagprefix"
   tagname="tagname"
   src="pathname" %>

Атрибуты

  • assembly
    Сборка, в которой находится пространство имен, связанное с атрибутом tagprefix.

    c76dd5k1.alert_note(ru-ru,VS.90).gifПримечание.

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

  • namespace
    Пространство имен регистрируемого пользовательского элемента управления.

  • src
    Местоположение (относительное или абсолютное) декларативного файла Пользовательские элементы управления ASP.NET для ассоциирования с парой tagprefix:tagname.

  • tagname
    Произвольный псевдоним, назначаемый классу. Этот атрибут используется только для пользовательских элементов управления.

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

Заметки

Включение директивы @ Register в код страницы или пользовательского элемента управления позволяет задавать макеты пользовательских серверных элементов управления или пользовательских элементов управления с помощью декларативного Синтаксис настраиваемых серверных элементов управления.

c76dd5k1.alert_note(ru-ru,VS.90).gifПримечание.

Вы также можете регистрировать пользовательские элементы управления на всех страницах приложения, используя Элемент controls для pages (схема параметров ASP.NET) в файле Web.config.

Директива @ Register используется в следующих случаях.

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

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

c76dd5k1.alert_note(ru-ru,VS.90).gifПримечание.

Значение "mobile" атрибута tagprefix используется ASP.NET для идентификации мобильных веб-элементов управления в пространств имен System.Web.UI.MobileControls. Следует избегать использования данного префикса для собственных элементов управления.

При использовании директивы @ Register для ссылки на элемент управления код элемента управления можно разместить следующими способами:

  • Как исходный код в папке App_Code, компилируемый динамически во время выполнения. Это удобный вариант в ходе разработки. Если вы выбрали этот вариант, не используйте атрибут assembly в директиве @ Register.

  • Как скомпилированную сборку в папке Bin приложения. Этот вариант обычно используется для развертываемых веб-приложений.

  • Как скомпилированную и подписанную сборку в глобальном кэше сборок (GAC). Этот распространенный вариант в случае, когда требуется использовать один и тот же скомпилированный элемент управления в нескольких приложениях. Ссылаться на элемент управления в GAC можно, присвоив атрибуту assembly идентифицирующее строковое значение. Строка задает необходимую информацию об элементе управления, включая полное имя типа, версию, маркер открытого ключа, язык и региональные параметры. Следующая вымышленная строка иллюстрирует ссылку на пользовательский элемент управления в GAC:

    <%@ Register  tagprefix="custom"
         namespace="Mycompany.namespace"
         assembly="Mycompany.namespace.control, Version=1.2.3.4, 
            PublicKeyToken=12345678abcdefgh, Culture=neutral"  %>
    

    Дополнительные сведения о ссылках на сборки см. в разделе Элемент add для элемента assemblies для элемента compilation (схема параметров ASP.NET).

Для декларативных пользовательских элементов управления следует использовать атрибуты tagname, tagprefix и src. Первые два атрибута всегда используются совместно в виде разделяемой двоеточием пары (tagprefix:tagname) при объявлении элемента управления на странице. Одному и тому же атрибуту tagname можно сопоставить несколько пространств имен, как в следующем примере.

<% @Register tagprefix="tag1" namespace="MyNamespace1"/>
<% @Register tagprefix="tag1" namespace="MyNamespace2"/> 

Значением атрибута src может быть относительный или абсолютный путь к исходному файлу пользовательского элемента управления, задаваемый относительно корневого каталога приложения. Для простоты рекомендуется использовать относительный путь. Например, предположим, что все файлы пользовательских элементов управления в приложении хранятся в каталоге \Usercontrol, вложенном в корневой каталог приложения. Чтобы включить находящийся в файле usercontrol1.ascx пользовательский элемент управления, укажите в директиве @ Register следующее:

Src="~\usercontrol\usercontrol1.ascx" 

Тильда (~) представляет корневой каталог приложения.

c76dd5k1.alert_note(ru-ru,VS.90).gifПримечание.

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

При включении пользовательских серверных элементов управления, скомпилированных в DLL-библиотеку для использования с приложением, следует воспользоваться атрибутом tagprefix с атрибутами assembly и namespace. Если не включить атрибут namespace или указать пустую строку в качестве его значения, произойдет ошибка анализатора.

c76dd5k1.alert_caution(ru-ru,VS.90).gifВнимание!

При разработке пользовательского серверного элемента управления необходимо включить его в пространство имен. Если этого не сделать, элемент не будет доступен из страницы ASP.NET. Дополнительные сведения о разработке пользовательских серверных элементов управления ASP.NET см. в разделе Разработка пользовательских серверных элементов управления ASP.NET.

Пример

В следующем примере кода используются директивы @ Register для объявления псевдонимов tagprefix и tagname, а также задается значение атрибута src для ссылки на пользовательский элемент управления на веб-странице. Первая часть кода — это простой пользовательский элемент управления, представляющий собой элемент управления ASP.NET Calendar. Во второй части кода представлена страница, содержащая данный пользовательский элемент управления. Обратите внимание, что атрибут tagprefix задает произвольное значение префикса для использования с тегом. В качестве значения атрибута tagname используется имя класса, присвоенное пользовательскому элементу управления. Следует отметить, что значение данного атрибута произвольно, и в качестве него можно использовать любую строку — это не обязательно должно быть имя класса элемента управления, на который дается ссылка. Атрибут src указывает на файл исходного кода пользовательского элемента управления, путь к которому задан относительно корневой папки приложения. Ссылка на пользовательский элемент управления в приложении осуществляется с использованием префикса, двоеточия и имени тега в следующей форме: <uc1:CalendarUserControl runat="server" />.

<%@ Control ClassName="CalendarUserControl" %>
<asp:calendar id="Calendar1" runat="server" />


<%@ Page %>
<%@ register tagprefix="uc1" 
    tagname="CalendarUserControl" 
    src="~/CalendarUserControl.ascx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Calendar Page</title>
</head>
<body>
  <form id="form1" runat="server">
    <uc1:calendarusercontrol runat="server" />
  </form>
</body>
</html>

См. также

Основные понятия

Общие сведения о синтаксисе веб-страниц ASP.NET

Ссылки

Синтаксис директив

Другие ресурсы

Пользовательские элементы управления ASP.NET