@ Reference

다른 사용자 정의 컨트롤, 페이지 소스 파일 또는 가상 경로에 있는 임의의 파일을 동적으로 컴파일하고 이 지시문이 선언된 현재 ASP.NET 파일(웹 페이지, 사용자 정의 컨트롤 또는 마스터 페이지)에 링크해야 함을 나타냅니다.

<%@ 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 지시문이 포함된 현재 웹 페이지, 사용자 정의 컨트롤 또는 마스터 페이지 파일에 링크할 수 있습니다. 이렇게 하면 현재 파일 내에서 컴파일된 외부 개체 및 해당 개체의 공용 멤버를 참조할 수 있습니다.

예제

다음 코드 예제에서는 이 지시문을 사용하여 사용자 정의 컨트롤을 링크하고, 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 웹 페이지 구문 개요

기타 리소스

ASP.NET 사용자 정의 컨트롤