@ Reference

[Esta documentación se proporciona solo para fines preliminares y está sujeta a cambios en versiones posteriores. Se incluye temas en blanco como marcadores].

Indica que otro control de usuario, archivo de código fuente de página o archivo arbitrario que se encuentra en alguna ruta de acceso virtual debe compilarse dinámicamente y vincularse al archivo ASP.NET actual (página Web, control de usuario o página maestra) en el que se declara esta directiva.

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

Atributos

  • Page
    Página externa que ASP.NET debería compilar dinámicamente y vincular al archivo actual que contiene la directiva @ Reference.

  • Control
    Control de usuario externo que ASP.NET debería compilar dinámicamente y vincular al archivo actual que contiene la directiva @ Reference.

  • virtualPath
    Ruta de acceso virtual para la referencia. Puede ser cualquier tipo de archivo, siempre y cuando exista un proveedor de compilación. Por ejemplo, sería posible que señalase a una página maestra.

Comentarios

Al utilizar esta directiva, se puede compilar dinámicamente una página, un control de usuario u otro tipo de archivo asociado a un proveedor de compilación, y vincularlo al archivo actual de la página Web, control de usuario o página maestra que contenga la directiva @ Reference. Esto permite hacer referencia al objeto externo compilado y a sus miembros públicos desde el archivo actual.

Ejemplo

En el siguiente ejemplo de código se muestra cómo utilizar esta directiva para vincular un control de usuario y cargarlo en una página contenedora a través del método LoadControl. La primera parte del código es un control de usuario simple. Debe colocar este código en un nuevo archivo y denominarlo MyControl.ascx. La segunda parte del código es una página que hace referencia al control de usuario. Una vez cargado en la página, se establece el valor LabelText del control de usuario y este último se agrega a un objeto System.Web.UI.ControlCollection del control de servidor PlaceHolder por medio de la propiedad 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>

Vea también

Referencia

Sintaxis de directivas de plantilla de texto

Conceptos

ASP.NET Web Page Syntax Overview

Otros recursos

ASP.NET User Controls