@ Register

[이 설명서는 미리 보기 전용이며, 이후 릴리스에서 변경될 수 있습니다. 비어 있는 항목은 자리 표시자로 포함됩니다.]

개발자가 웹 페이지, 사용자 정의 컨트롤, 마스터 페이지 등의 ASP.NET 응용 프로그램에서 간단한 방법으로 사용자 지정 컨트롤을 참조할 수 있도록 태그 접두사와 사용자 지정 컨트롤을 연결합니다.

<%@ Register tagprefix="tagprefix"
   namespace="namespace"
   assembly="assembly" %>
<%@ Register tagprefix="tagprefix"
   namespace="namespace" %>
<%@ Register tagprefix="tagprefix"
   tagname="tagname"
   src="pathname" %>

특성

  • assembly
    tagprefix 특성에 연결된 네임스페이스가 있는 어셈블리입니다.

    참고

    어셈블리 이름에는 파일 확장명이 없습니다.또한 assembly 특성이 없으면 ASP.NET 파서에서 응용 프로그램의 App_Code 폴더에 소스 코드가 없다고 가정합니다.컨트롤을 컴파일하지 않고 페이지에 등록하려는 경우 컨트롤의 소스 코드를 App_Code 폴더에 배치합니다.ASP.NET에서 런타임에 App_Code 폴더의 소스 파일을 동적으로 컴파일합니다.

  • namespace
    등록되는 사용자 지정 컨트롤의 네임스페이스입니다.

  • src
    tagprefix:tagname 쌍에 연결할 선언적 ASP.NET User Controls 파일의 상대 또는 절대 위치입니다.

  • tagname
    클래스에 연결할 임의의 별칭입니다. 이 특성은 사용자 정의 컨트롤에만 사용됩니다.

  • tagprefix
    지시문이 포함된 파일에 사용되는 태그의 네임스페이스를 간단하게 참조할 수 있는 임의의 별칭입니다.

설명

페이지나 사용자 정의 컨트롤에 @ Register 지시문을 포함하면 선언적 사용자 지정 서버 컨트롤 구문을 사용하여 사용자 지정 서버 컨트롤이나 사용자 정의 컨트롤을 레이아웃할 수 있습니다.

참고

Web.config 파일에서 pages 요소에 대한 controls 요소(ASP.NET 설정 스키마)를 사용하여 응용 프로그램의 모든 페이지에 사용자 지정 컨트롤을 등록할 수도 있습니다.

다음과 같은 경우에 @ Register 지시문을 사용합니다.

  • 웹 페이지, 사용자 정의 컨트롤, 마스터 페이지 또는 스킨 파일에 선언적으로 사용자 지정 서버 컨트롤을 추가하는 경우(ASP.NET Themes Overview 참조)

  • 웹 페이지, 사용자 정의 컨트롤, 마스터 페이지 또는 스킨 파일에 선언적으로 사용자 정의 컨트롤을 추가하는 경우

참고

ASP.NET에서는 tagprefix 값 "mobile"을 사용하여 System.Web.UI.MobileControls 네임스페이스의 모바일 웹 컨트롤을 식별합니다.사용자 컨트롤에는 이 접두사를 사용하지 말아야 합니다.

@ Register 지시문을 사용하여 컨트롤을 참조할 때 컨트롤의 코드를 다음 위치에 배치할 수 있습니다.

  • 소스 코드를 응용 프로그램의 App_Code 폴더에 배치하여 런타임에 동적으로 컴파일합니다. 개발 도중 이 방법을 편리하게 사용할 수 있습니다. 이 방법을 선택하는 경우 @ Register 지시문의 assembly 특성은 사용하지 않습니다.

  • 응용 프로그램의 Bin 폴더에 컴파일된 어셈블리로 배치합니다. 배포된 웹 응용 프로그램에서는 이 방법을 일반적으로 사용합니다.

  • GAC(전역 어셈블리 캐시)에 컴파일 및 서명된 어셈블리로 배치합니다. 이 방법은 여러 응용 프로그램 간에 컴파일된 컨트롤을 공유하려는 경우에 일반적입니다. assembly 특성에 식별 문자열을 할당하면 GAC에 있는 컨트롤을 참조할 수 있습니다. 이 문자열은 컨트롤의 정규화된 형식 이름, 버전, 공용 키 토큰 및 culture 등의 필수 상세 정보를 지정합니다. 다음 예제 문자열은 GAC에 있는 사용자 지정 컨트롤을 참조하는 방법을 보여 줍니다.

    <%@ Register  tagprefix="custom"
         namespace="Mycompany.namespace"
         assembly="Mycompany.namespace.control, Version=1.2.3.4, 
            PublicKeyToken=12345678abcdefgh, Culture=neutral"  %>
    

    어셈블리 참조에 대한 자세한 내용은 compilation 요소의 assemblies 요소에 대한 add 요소(ASP.NET 설정 스키마)를 참조하십시오.

선언적 사용자 정의 컨트롤의 경우 tagname, tagprefix 및 src 특성을 사용합니다. 처음 두 특성은 페이지에서 컨트롤을 선언할 때 항상 콜론으로 구분된 쌍(tagprefix:tagname)으로 함께 사용됩니다. 다음 예제와 같이 여러 네임스페이스를 같은 tagname에 매핑할 수 있습니다.

<% @Register tagprefix="tag1" namespace="MyNamespace1"/>
<% @Register tagprefix="tag1" namespace="MyNamespace2"/> 

src 특성 값은 응용 프로그램의 루트 디렉터리에서 사용자 정의 컨트롤 소스 파일에 대한 상대 또는 절대 경로가 될 수 있습니다. 편의를 위해 상대 경로를 사용하는 것이 좋습니다. 예를 들어 응용 프로그램 루트의 하위 디렉터리인 \Usercontrol 디렉터리에 응용 프로그램의 모든 사용자 정의 컨트롤 파일을 저장한다고 가정합니다. Usercontrol1.ascx 파일에 있는 사용자 정의 컨트롤을 포함하려면 @ Register 지시문에 다음을 포함합니다.

Src="~\usercontrol\usercontrol1.ascx" 

물결표~ 문자는 응용 프로그램의 루트 디렉터리를 나타냅니다.

참고

사용자 정의 컨트롤이 해당 컨트롤이 포함된 페이지와 같은 디렉터리에 있는 경우 src 특성 값은 .ascx 파일의 이름과 확장명이어야 합니다.

응용 프로그램에 사용할 .dll 파일로 컴파일한 사용자 지정 서버 컨트롤을 포함할 경우에는 assembly 및 namespace 특성과 함께 tagprefix 특성을 사용합니다. namespace 특성을 포함하지 않거나 이 특성에 빈 문자열("")을 할당하면 파서 오류가 발생합니다.

경고

사용자 지정 서버 컨트롤을 개발할 때는 이 컨트롤을 네임스페이스에 포함시켜야 합니다.그렇게 하지 않으면 ASP.NET 페이지에서 이 컨트롤에 액세스할 수 없습니다.사용자 지정 ASP.NET 서버 컨트롤을 개발하는 방법에 대한 자세한 내용은 Developing Custom ASP.NET Server Controls을 참조하십시오.

예제

다음 코드 예제에서는 @ Register 지시문을 사용하여 tagprefix 및 tagname 별칭을 선언하고, src 특성을 할당하여 웹 페이지의 사용자 정의 컨트롤을 참조합니다. 첫 번째 코드 부분은 ASP.NET Calendar 컨트롤로 구성된 간단한 사용자 정의 컨트롤입니다. 두 번째 코드 부분은 컨트롤을 호스팅하는 페이지입니다. tagprefix 특성은 태그에 사용할 임의의 접두사 값을 할당합니다. tagname 특성은 사용자 정의 컨트롤에 할당된 클래스 이름의 값을 사용합니다. 이 특성의 값은 임의의 값이며 모든 문자열 값을 사용할 수 있지만 참조되는 컨트롤의 클래스 이름을 사용할 필요가 없습니다. src 특성은 응용 프로그램 루트 폴더에 상대적인 사용자 정의 컨트롤의 소스 파일을 가리킵니다. 페이지 본문 내에서 접두사, 콜론, 태그 이름을 사용하여 <uc1:CalendarUserControl runat="server" /> 형식으로 이 사용자 정의 컨트롤을 참조합니다.

<%@ Control ClassName="CalendarUserControl" %>
<asp:calendar id="Calendar1" runat="server" />


<%@ Page %>
<%@ register tagprefix="uc1" 
    tagname="CalendarUserControl" 
    src="~/CalendarUserControl.ascx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Calendar Page</title>
</head>
<body>
  <form id="form1" runat="server">
    <uc1:calendarusercontrol runat="server" />
  </form>
</body>
</html>

참고 항목

참조

텍스트 템플릿 지시문 구

개념

ASP.NET Web Page Syntax Overview

기타 리소스

ASP.NET User Controls