Поделиться через


@ Reference

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

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

<%@ Reference Page="path to .aspx page"
   Control="path to .ascx file"
   virtualPath="path to file" %>

Атрибуты

  • Page
    Внешняя страница, которая при использовании ASP.NET должна быть динамически скомпилирована и связана с текущим файлом, содержащим директиву @ Reference.

  • Control
    Внешний пользовательский элемент управления, который при использовании ASP.NET должен быть динамически скомпилирован и связан с текущим файлом, содержащим директиву @ Reference.

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

Заметки

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

Пример

В следующем примере показано использование данной директивы для связи пользовательского элемента управления и его загрузки на содержащую страницу с помощью метода LoadControl. В первой части кода представлен простой пользовательский элемент управления. Этот код следует поместить в новый файл и присвоить ему имя MyControl.ascx. Во второй части кода представлена страница, которая ссылается на пользовательский элемент управления. При загрузке пользовательского элемента управления на страницу, для него устанавливается значение LabelText, и он добавляется в PlaceHolder объекта System.Web.UI.ControlCollection серверного элемента управления с помощью свойства Control.Controls.

<%@ Control language="C#" ClassName="MyControl" %>
<script runat="server">
  
  private string _labelText;
  
  public string LabelText
  {
    get { return _labelText; }
    set
    {
      if(!String.IsNullOrEmpty(value))
        _labelText = Server.HtmlEncode(value);
    }
  }

  void label1_init(object sender, EventArgs e)
  {
    label1.Text = LabelText;
  }
</script>

<asp:label id="label1" runat="server" Text="" 
  oninit="label1_init" />


<%@ Page language="C#" %>
<%@ Reference Control="MyControl.ascx" %>
<script runat="server">

  void Page_Load(Object sender, EventArgs e) 
  {
    MyControl ctrl = (MyControl) Page.LoadControl("MyControl.ascx");
    ctrl.LabelText = "Hello World!";
    PlaceHolder.Controls.Add(ctrl);
  }

</script>

<html>
   <body>
      <asp:placeholder id="PlaceHolder" runat="server" />
   </body>
</html>
<%@ Control language="VB" ClassName="MyControl" %>
<script runat="server">

  Dim _labelText As String
  
  Public Property LabelText() as String
    Get
      Return _labelText
    End Get
    Set(Byval value as String)
      If Not String.IsNullOrEmpty(value) Then
        _labelText = Server.HtmlEncode(value)
      End If
    End Set
  End Property

  Sub label1_init(Byval sender as Object, _
    ByVal e as EventArgs)
    label1.Text = LabelText
  End Sub

</script>

<asp:label id="label1" runat="server" Text="" 
  oninit="label1_init" />


<%@ Page language="VB" %>
<%@ Reference Control="MyControl.ascx" %>
<script runat="server">

  Sub Page_Load(ByVal sender As Object, _
    ByVal e As EventArgs)
    
    Dim ctrl As MyControl = _
     CType(Page.LoadControl("MyControl.ascx"), MyControl)
    ctrl.LabelText = "Hello World!"
    PlaceHolder.Controls.Add(ctrl)
  End Sub

</script>

<html>
   <body>
      <asp:placeholder id="PlaceHolder" 
        runat="server" />
   </body>
</html>

См. также

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

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

Ссылки

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

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

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