Partager via


@ Reference

Mise à jour : novembre 2007

Indique qu'un autre contrôle utilisateur, fichier source de page ou fichier arbitraire situé dans un chemin d'accès virtuel quelconque doit être compilé dynamiquement et lié au fichier ASP.NET actif (page Web, contrôle utilisateur ou page maître) dans lequel cette directive est déclarée.

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

Attributs

  • Page
    Page externe qu'ASP.NET doit compiler dynamiquement et lier au fichier actif contenant la directive @ Reference.

  • Control
    Contrôle utilisateur externe qu'ASP.NET doit compiler dynamiquement et lier au fichier actif contenant la directive @ Reference.

  • virtualPath
    Chemin d'accès virtuel de la référence. Il peut s'agir de n'importe quel type de fichier pour autant qu'un fournisseur de générations existe. Par exemple, il est possible de pointer vers une page maître.

Notes

L'utilisation de cette directive permet de compiler dynamiquement une page, un contrôle utilisateur ou un autre type de fichier associé à un fournisseur de générations et de le lier au fichier de page Web, de contrôle utilisateur ou au fichier maître d'échange actif qui contient la directive @ Reference. Cela vous permet de référencer l'objet compilé externe et ses membres publics à partir du fichier actif.

Exemple

L'exemple de code suivant montre comment utiliser cette directive pour lier un contrôle utilisateur et le charger dans une page conteneur à l'aide de la méthode LoadControl. La première partie du code est un contrôle utilisateur simple. Vous devez placer ce code dans un nouveau fichier et le nommer MyControl.ascx. La deuxième partie du code est une page qui référence le contrôle utilisateur. Lorsque le contrôle utilisateur est chargé dans la page, sa valeur LabelText est définie et le contrôle utilisateur est ajouté à l'objet System.Web.UI.ControlCollection d'un contrôle serveur PlaceHolder via la propriété 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>

Voir aussi

Concepts

Vue d'ensemble de la syntaxe des pages Web ASP.NET

Référence

Syntaxe de directive

Autres ressources

Contrôles utilisateur ASP.NET