@ Reference
Aggiornamento: novembre 2007
Indica che è necessario compilare dinamicamente un altro file d'origine della pagina, del controllo utente o arbitrario presente nello stesso percorso virtuale e che è necessario collegarlo al file ASP.NET (pagina Web, controllo utente o pagina master) in cui è dichiarata la direttiva.
<%@ Reference Page="path to .aspx page"
Control="path to .ascx file"
virtualPath="path to file" %>
Attributi
Page
La pagina esterna che deve essere dinamicamente compilata e collegata al file corrente che contiene la direttiva @ Reference.Control
Il controllo utente esterno che deve essere dinamicamente compilato e collegato al file corrente che contiene la direttiva @ Reference.virtualPath
Il percorso virtuale per il riferimento. Può essere qualsiasi tipo di file purché sia disponibile un provider di generazione. Sarebbe possibile, ad esempio, fare riferimento a una pagina master.
Note
L'utilizzo della direttiva consente di compilare dinamicamente una pagina, un controllo utente o un altro tipo di file associato a un provider di generazione e di collegarlo alla pagina Web, al controllo utente o al file della pagina master corrente che contiene la direttiva @ Reference. In questo modo sarà possibile fare riferimento dal file corrente all'oggetto compilato esterno e ai rispettivi membri pubblici.
Esempio
Nell'esempio di codice riportato di seguito viene illustrato l'utilizzo di questa direttiva per il collegamento a un controllo utente e per il caricamento in una pagina contenitore mediante il metodo LoadControl. La prima parte del codice è un controllo utente semplice. È preferibile inserire il codice in un nuovo file da denominare MyControl.ascx. La seconda parte del codice è una pagina che fa riferimento al controllo utente. Quando viene caricato nella pagina, il valore LabelText del controllo utente viene impostato e il controllo utente viene aggiunto all'oggetto System.Web.UI.ControlCollection del controllo utente PlaceHolder mediante la proprietà 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>
Vedere anche
Concetti
Cenni preliminari sulla sintassi delle pagine Web ASP.NET