사용자 지정 서버 컨트롤의 메타데이터 특성
업데이트: 2007년 11월
메타데이터 특성은 서버 컨트롤 및 컨트롤 멤버에 적용되어 ASP.NET 페이지 파서, ASP.NET 런타임, 공용 언어 런타임 같은 디자인 도구에서 사용하는 정보를 제공합니다. 디자인 타임 특성은 페이지 개발자가 비주얼 디자이너에서 컨트롤을 사용할 경우 디자인 타임에 개발자의 작업 환경을 향상시킵니다. 디자인 타임 전용 특성은 페이지 요청을 수행하는 동안 컨트롤의 기능에 아무런 영향을 주지 않습니다. 컨트롤의 구문 분석 타임 특성은 ASP.NET 페이지 파서가 페이지에서 컨트롤의 선언적 구문을 읽을 때 사용됩니다. 구문 분석 타임 및 런타임 특성은 페이지에서 컨트롤이 동작하는 데 반드시 필요합니다.
이 항목에서는 컨트롤 및 컨트롤의 공용 속성과 이벤트에 일반적으로 적용되는 메타데이터 특성에 대해 설명합니다.
컨트롤에 적용되는 특성
특성 |
예제 |
---|---|
AspNetHostingPermissionAttribute JIT 컴파일 타임 코드 액세스 보안 특성. 컨트롤에 연결되는 코드에 적절한 보안 권한이 부여되도록 하는 데 필요합니다. Control 클래스는 다음과 같이 두 개의 JIT 컴파일 타임 코드 액세스 보안 특성으로 표시됩니다. AspNetHostingPermission(SecurityAction.Demand, Level=AspNetHostingPermissionLevel.Minimal) and AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal). 첫 번째 특성은 컨트롤에 적용해야 하지만 상속 요청이 전이되고 파생 클래스에 대해 유효하므로 두 번째 특성을 적용할 필요가 없습니다. 자세한 내용은 SecurityAction을 참조하십시오. |
[AspNetHostingPermission(SecurityAction.Demand, Level=AspNetHostingPermissionLevel.Minimal)] 연습: 사용자 지정 서버 컨트롤 개발 및 사용의 WelcomeLabel 예제 컨트롤에 적용됩니다. |
구문 분석 타임 특성. 사용자 지정 컨트롤 작성기를 컨트롤과 연결합니다. 페이지 파서가 컨트롤의 선언적 구문을 구문 분석하기 위해 사용하는 기본 논리를 사용자 지정 컨트롤 작성기를 사용하여 수정하려는 경우에만 이 특성을 적용해야 합니다. 컨트롤 태그에 포함된 내용이 속성에 해당하는지 아니면 자식 컨트롤에 해당하는지만 지정하려면 사용자 지정 컨트롤 작성기 대신 이 표의 뒷부분에 나오는 ParseChildrenAttribute 특성을 사용하십시오. |
[ControlBuilder(typeof(MyControlBuilder))] |
디자인 타임 및 런타임 특성. 컨트롤의 기본값으로 사용되는 속성을 지정합니다. 이 특성을 적용하면 컨트롤을 런타임에 쿼리의 매개 변수로 사용할 수 있고 런타임에 ControlParameter 개체가 바인딩하는 기본값이 정의됩니다. |
[ControlValueProperty("Text")] |
디자인 타임 특성. 비주얼 디자이너에서 컨트롤에 대한 기본 이벤트를 지정합니다. 대부분의 비주얼 디자이너에서는 페이지 개발자가 디자인 화면의 컨트롤을 두 번 클릭하면 기본 이벤트의 이벤트 처리기에 커서가 삽입된 상태로 코드 편집기가 열립니다. |
[DefaultEvent("Submit")] 합성 웹 컨트롤 예제의 Register 예제 컨트롤에 적용됩니다. |
디자인 타임 특성. 페이지 개발자가 디자인 화면에서 컨트롤을 선택하면 이 특성에 지정된 속성이 비주얼 디자이너의 속성 브라우저에서 강조 표시됩니다. |
[DefaultProperty("Text")] 연습: 사용자 지정 서버 컨트롤 개발 및 사용의 WelcomeLabel 예제 컨트롤에 적용됩니다. |
디자인 타임 특성. 컨트롤과 연결된 디자이너 클래스를 지정합니다. 컨트롤 디자이너 클래스는 비주얼 디자이너의 디자인 화면에 나타나는 연결된 컨트롤의 모양과 동작을 결정합니다. |
[Designer(typeof(SimpleCompositeControlDesigner))] 연습: 웹 서버 컨트롤의 기본 컨트롤 디자이너 만들기의 예제 컨트롤에 적용됩니다. |
구문 분석 타임 특성. 컨트롤 태그에 포함된 내용이 속성에 해당하는지 아니면 자식 컨트롤에 해당하는지를 지정합니다. Control 클래스는 ParseChildren(false)으로 표시되어 페이지 파서에서 컨트롤 태그에 포함된 내용을 자식 컨트롤로 해석합니다. WebControl 클래스는 ParseChildren(true)으로 표시되어 페이지 파서에서 컨트롤 태그에 포함된 내용을 속성으로 해석합니다. WebControl 클래스의 ParseChildrenAttribute 특성에 지정된 논리를 수정하려는 경우에만 이 특성을 적용해야 합니다. |
[ParseChildren(true, "Contacts")] 웹 컨트롤 컬렉션 속성 예제의 QuickContacts 예제 컨트롤에 적용됩니다. |
디자인 타임 특성. 컨트롤이 페이지에서 선언적으로 사용되는 경우 비주얼 디자이너에서 컨트롤 태그 내에 자식 컨트롤을 유지할지 아니면 속성을 유지할지를 지정합니다. Control 클래스는 PersistChildren(true)으로 표시되어 비주얼 디자이너에서 자식 컨트롤을 컨트롤 태그 내에 유지합니다. WebControl 클래스는 PersistChildren(false)으로 표시되어 비주얼 디자이너에서 속성을 컨트롤 태그 내에 특성으로 유지합니다. |
[PersistChildren(false)] WebControl 클래스에 적용되며 이 클래스에서 파생되는 대부분의 컨트롤에 적합합니다. 그러나 태그 내에 자식 컨트롤을 유지하는 컨테이너 컨트롤(예: Panel)은 PersistChildren(true) 및 ParseChildren(false)으로 표시됩니다. |
구문 분석 타임 특성. 컨트롤이 테마 또는 컨트롤 스킨의 영향을 받는지 여부를 지정합니다. 테마를 적용할 수 없도록 컨트롤 형식을 표시하면 컨트롤의 모든 멤버도 마찬가지로 테마의 영향을 받지 않습니다. |
[Themeable(false)] 앞의 예제에서 보여 준 특성을 적용하여 컨트롤 및 모든 해당 멤버가 테마 또는 컨트롤 스킨의 영향을 받지 않도록 합니다. |
디자인 타임 특성. 도구 상자에서 컨트롤을 만들 경우 비주얼 디자이너에서 태그에 대해 자동으로 만드는 태그의 서식을 지정합니다. |
[ToolboxData("<{0}:WelcomeLabel runat=\"server\"> </{0}:WelcomeLabel>"] 연습: 사용자 지정 서버 컨트롤 개발 및 사용의 WelcomeLabel 예제 컨트롤에 적용됩니다. |
디자인 타임 특성. 비주얼 디자이너에서 도구 상자에 컨트롤 또는 구성 요소를 표시할지 여부를 지정합니다. 기본적으로 컨트롤은 항상 도구 상자에 표시됩니다. 도구 상자에 표시하지 않으려는 컨트롤(예: 템플릿 속성의 소유자)에만 이 특성을 적용해야 합니다. |
[ToolboxItem(false)] 템플릿 기반 서버 컨트롤 예제의 TemplateOwner 컨트롤에 적용됩니다. |
디자인 타임 특성. 유효성 검사 컨트롤로 검사하는 속성의 이름을 지정합니다. 일반적으로 TextBox 컨트롤의 Text 속성과 같이 런타임에 사용자가 값을 제공하는 속성이 여기에 해당합니다. 비주얼 디자이너에서는 페이지 개발자가 유효성 검사 컨트롤의 대상을 선택할 수 있는 대화 상자에 페이지의 컨트롤에 대해 ValidationPropertyAttribute로 지정한 속성이 나열됩니다. |
[ValidationProperty("Text")] |
공용 속성에 적용되는 특성
특성 |
예제 |
---|---|
디자인 타임 특성. 데이터를 속성에 바인딩할 수 있는지 여부를 지정합니다. 비주얼 디자이너의 속성 브라우저에서는 컨트롤의 바인딩 가능한 속성을 대화 상자에 표시할 수 있습니다. 예를 들어 Visual Studio에서는 바인딩 가능한 속성이 DataBindings 대화 상자에 표시됩니다. 속성이 이 특성으로 표시되어 있지 않으면 속성 브라우저에서는 속성 값을 Bindable(false)로 가정합니다. |
[Bindable(true)] 연습: 사용자 지정 서버 컨트롤 개발 및 사용에 있는 WelcomeLabel 예제 컨트롤의 Text 속성에 적용됩니다. |
디자인 타임 특성. 비주얼 디자이너의 속성 브라우저에 속성을 표시할지 여부를 지정합니다. 속성 브라우저에 표시하지 않으려는 속성에는 Browsable(false)을 적용합니다. 속성이 이 특성으로 표시되어 있지 않으면 속성 브라우저에서는 기본값 Browsable(true)을 가정합니다. |
[Browsable(false)] 템플릿 기반 서버 컨트롤 예제에 있는 VacationHome 예제 컨트롤의 Template 속성에 적용됩니다. |
디자인 타임 특성. 비주얼 디자이너의 속성 브라우저에서 속성을 분류하는 방법을 지정합니다. 예를 들어 Category("Appearance") 특성을 설정하면 페이지 개발자가 속성 브라우저에서 범주 보기를 사용하는 경우 속성 브라우저에서 모양 범주에 속성이 표시됩니다. 속성 브라우저에서 기존 범주에 해당하는 문자열 인수를 지정하거나 새 범주를 직접 만들 수 있습니다. |
[Category("Appearance")] 연습: 사용자 지정 서버 컨트롤 개발 및 사용에 있는 WelcomeLabel 예제 컨트롤의 Text 속성에 적용됩니다. |
디자인 타임 특성. 속성의 기본값을 지정합니다. 이 값은 속성 접근자(getter)에서 반환하는 기본값과 같아야 합니다. Visual Studio 같은 일부 비주얼 디자이너에서 DefaultValueAttribute 특성을 사용하면 페이지 개발자는 바로 가기 메뉴의 다시 설정 명령을 사용하여 속성 값을 기본값으로 다시 설정할 수 있습니다. |
[DefaultValue("")] 연습: 사용자 지정 서버 컨트롤 개발 및 사용에 있는 WelcomeLabel 예제 컨트롤의 Text 속성에 적용됩니다. |
디자인 타임 특성. 속성에 대한 간단한 설명을 지정합니다. Visual Studio 같은 비주얼 디자이너의 속성 브라우저에서는 선택한 속성에 대한 설명이 일반적으로 창 아래쪽에 표시됩니다. |
[Description("The welcome message text.")] 연습: 사용자 지정 서버 컨트롤 개발 및 사용에 있는 WelcomeLabel 예제 컨트롤의 Text 속성에 적용됩니다. |
DesignerSerializationVisibilityAttribute 디자인 타임 특성. 속성을 serialize하는지 아니면 디자인 타임에 설정되는 속성 내용(예: 하위 속성 또는 컬렉션 항목)을 serialize하는지를 지정합니다. 이 특성의 생성자에 대한 인수는 DesignerSerializationVisibility 열거형의 값입니다. 이 특성이 적용되지 않으면 기본값 Visible로 간주되어 속성 값이 serialize됩니다. |
[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)] 서버 컨트롤 속성 예제에 있는 Book 예제 컨트롤의 Author 속성에 적용됩니다. |
디자인 타임 특성. 사용자 지정 UITypeEditor 편집기를 속성 또는 속성 형식과 연결합니다. 이 특성이 형식에 적용되는 경우 해당 형식의 속성에는 특성을 적용할 필요가 없습니다. |
[Editor(typeof(ContactCollectionEditor), typeof(UITypeEditor))] 웹 컨트롤 컬렉션 속성 예제에 있는 QuickContacts 예제 컨트롤의 Contacts 속성에 적용됩니다. |
디자인 타임 특성. 속성 이름이 소스 편집기의 IntelliSense 목록에 나타나는지 여부를 지정합니다. 이 특성을 메서드와 이벤트에 적용할 수도 있습니다. 이 특성의 생성자에 대한 인수는 EditorBrowsableState 열거형의 값입니다. 이 특성이 적용되지 않으면 기본값 Always로 간주됩니다. |
[EditorBrowsableAttribute (EditorBrowsableState.Never)] 이전 예제의 특성을 적용하여 IntelliSense에서 멤버를 숨깁니다. |
디자인 타임 및 구문 분석 타임 특성. 속성이 장치 및 브라우저 필터링에 참여할 수 있는지 여부를 지정합니다. 페이지 개발자는 필터링을 사용하여 단일 컨트롤 선언 내에서 각 브라우저에 대해 다른 속성 값을 지정할 수 있습니다. 예를 들어 다음 구문과 같이 페이지 개발자는 필터링을 사용하여 Label 컨트롤의 Text 속성에 대해 다른 값을 설정할 수 있습니다.
"UP"와 "IE"는 브라우저 필터입니다. 이 특성이 적용되지 않으면 기본값 Filterable(true)로 간주됩니다. |
[Filterable(false)] 이전 예제의 특성을 적용하여 장치 및 브라우저 필터링에서 속성을 제외합니다. |
디자인 타임 특성. 속성을 지역화할 수 있는지 여부를 지정합니다. 속성이 Localizable(true)로 표시되어 있으면 속성 값이 리소스 파일에 저장됩니다. 이 특성이 적용되지 않으면 기본값 Localizable(false)로 간주됩니다. |
[Localizable(true)] 연습: 사용자 지정 서버 컨트롤 개발 및 사용에 있는 WelcomeLabel 예제 컨트롤의 Text 속성에 적용됩니다. |
디자인 타임 특성. 속성 브라우저에서 하위 속성의 변경 내용을 부모 속성에 전파하도록 지정합니다. |
[NotifyParentProperty(true)] 서버 컨트롤 속성 예제에 정의된 Author 형식의 FirstName, LastName 및 MiddleName 속성에 적용됩니다. |
디자인 타임 특성. 속성을 컨트롤 태그의 특성으로 유지할지 아니면 컨트롤 태그에 포함된 중첩 내용으로 유지할지를 지정합니다. 이 특성의 생성자에 대한 인수는 PersistenceMode 열거형의 값입니다. |
[PersistenceMode(PersistenceMode.InnerProperty)] 서버 컨트롤 속성 예제에 있는 Book 예제 컨트롤의 Author 속성에 적용됩니다. |
디자인 타임 및 구문 분석 타임 특성. ITemplate 인터페이스를 반환하는 속성에 대한 명명 컨테이너의 형식을 지정합니다. |
[TemplateContainer(typeof(CustomTemplateContainer))] 앞의 예제에서 보여 준 특성을 적용하여 CustomTemplateContainer 클래스에서 ITemplate 속성을 나타내도록 지정합니다. |
디자인 타임 및 구문 분석 타임 특성. 템플릿 속성에서 단일 인스턴스 또는 다중 인스턴스의 생성을 허용하는지 여부를 지정합니다. 템플릿 속성을 TemplateInstanceAttribute 특성으로 확장하지 않으면 다중 인스턴스가 기본값이 됩니다. |
[TemplateInstance(TemplateInstance.Single)] 앞의 예제에서 보여 준 특성을 적용하여 템플릿 속성의 인스턴스를 하나만 만들 수 있도록 지정합니다. |
구문 분석 타임 특성. 컨트롤 멤버가 테마 또는 컨트롤 스킨의 영향을 받는지 여부를 지정합니다. 컨트롤 형식 자체에 테마를 적용할 수 있는 경우 기본적으로 컨트롤에서 노출하는 모든 속성에 테마를 적용할 수 있습니다. |
[Themeable(false)] 앞의 예제에서 보여 준 특성을 적용하여 컨트롤 멤버가 테마 또는 컨트롤 스킨의 영향을 받지 않도록 합니다. |
디자인 타임, 구문 분석 타임 및 런타임 특성. 형식 변환기를 속성 또는 속성 형식과 연결합니다. 형식 변환기는 문자열 표현을 지정된 형식으로 변환하거나 지정된 형식을 문자열 표현으로 변환합니다. |
[TypeConverter(typeof(AuthorConverter))] 서버 컨트롤 속성 예제에 정의된 Author 형식에 적용됩니다. |
디자인 타임 및 런타임 특성. 문자열 속성이 URL 값을 나타내도록 지정합니다. 이 값을 사용하면 URL 작성기를 속성과 연결할 수 있습니다. |
[UrlProperty("*.aspx",AllowedTypes=UrlTypes.Absolute|UrlTypes.RootRelative|UrlTypes.AppRelative)] 이 특성을 적용하여 ASP.NET 파일에 특정 파일 필터를 설정하고 절대 경로와 상대 경로를 허용합니다. |
이벤트 멤버에 적용되는 특성
이벤트 멤버에 적용되는 주요 특성은 BrowsableAttribute, CategoryAttribute, DescriptionAttribute라는 세 가지 디자인 타임 특성입니다. 이러한 특성은 속성에도 적용되며 위의 표에 설명되어 있습니다. 코드 예제를 보려면 합성 웹 컨트롤 예제에 있는 Register 예제 컨트롤의 Submit 이벤트를 참조하십시오.