@ Reference

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à System.Web.UI.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

Riferimenti

Sintassi delle direttive

Concetti

Cenni preliminari sulla sintassi delle pagine Web ASP.NET

Altre risorse

Controlli utente ASP.NET