Compartilhar via


@ Referência

Indica que outro usuário controle, arquivo de fonte da página ou arquivo arbitrário localizado em algum caminho virtual deve ser dinamicamente compilado e vinculado com o arquivo corrente do ASP.NET (página da Web, controle de usuário ou página-mestre) na qual essa diretiva é declarada.

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

Atributos

  • Page
    The external page that ASP.NET should dynamically compile and link to the current file that contains the @ Reference directive.

  • Control
    The external user control that ASP.NET should dynamically compile and link to the current file that contains the @ Reference directive.

  • virtualPath
    O caminho virtual para a referência. Pode ser qualquer tipo de arquivo desde que exista um provedor de compilação. Por exemplo, seria possível apontar para um mestre página.

Comentários

Using this directive allows you to dynamically compile a page, a user control, or another type of file that is associated with a build provider, and link it to the current Web page, user control, or master page file that contains the @ Reference directive. Isso lhe permite fazer referência ao objeto compilado externo e seus membros públicos de dentro do arquivo corrente.

Exemplo

O exemplo de código a seguir demonstra usando essa diretiva para vincular um controle de usuário e carregá-lo para uma página contendo usando o LoadControl método. A primeira parte do código é um controle de usuário simples. Você deve colocar este código em um novo arquivo e denomine MyControl.ascx. A segunda parte do código é uma página que referencia o controle de usuário. Quando ele é carregado para a página, LabelText o valor é conjunto, e o controle de usuário é adicionado a um PlaceHolder controle de servidor System.Web.UI.ControlCollection objeto por meio do Control.Controls propriedade.

<%@ 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>

Consulte também

Conceitos

Visão geral da sintaxe de página da Web ASP.NET

Referência

Sintaxe diretiva 

Outros recursos

Controles de usuário do ASP.NET