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