@ Reference

表示另一個使用者控制項、頁面原始程式檔,或是位於某個虛擬路徑的任意檔案,應該以動態編譯並連結至目前的 ASP.NET 檔案 (Web 網頁、使用者控制項或主版頁面 (Master Page)),也就是這個指示詞的宣告位置。

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

屬性

  • Page
    外部網頁,應該由 ASP.NET 動態編譯並連結至包含 @ Reference 指示詞的目前檔案。

  • Control
    外部使用者控制項,應該由 ASP.NET 動態編譯並連結至包含 @ Reference 指示詞的目前檔案。

  • virtualPath
    參考的虛擬路徑。 只要有組建提供者存在,就可以是任何檔案類型。 例如,此路徑可能指向主版頁面。

備註

使用這個指示詞可以讓您動態地編譯與組建提供者關聯的網頁、使用者控制項,或是其他檔案類型,並將其連結至包含 @ Reference 指示詞的目前網頁、使用者控制項或主版頁面檔案。 如此可以讓您從目前的檔案內參考外部已編譯的物件及其 Public 成員。

範例

下列程式碼範例示範使用這個指示詞連結使用者控制項,並使用 LoadControl 方法將其載入包含頁面。 程式碼的第一個部分是簡單的使用者控制項。 您應該將這段程式碼放置在新的檔案中,並將該檔命名為 MyControl.ascx。 程式碼的第二個部分則是參考使用者控制項的網頁。 當使用者控制項載入網頁時,就會設定其 LabelText 值,而且使用者控制項會透過 Control.Controls 屬性加入至 PlaceHolder 伺服器控制項的 System.Web.UI.ControlCollection 物件。

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

請參閱

參考

文字範本指示詞語法

概念

ASP.NET Web Page Syntax Overview

其他資源

ASP.NET User Controls