@ 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