사용자 지정 컨트롤 및 사용자 정의 컨트롤 개요

기술 자료 번역 기술 자료 번역
기술 자료: 893667 - 이 문서가 적용되는 제품 보기.
ASP.NET Support Voice 열

사용자 지정 컨트롤 및 사용자 정의 컨트롤 개요

사용자의 요구에 칼럼을 우리는 관심 있는 주제에 대한 아이디어를 제출할 수 초대할 및 향후 기술 자료 문서 및 Support Voice 칼럼에서 확인할 문제를 해결했습니다. 아이디어 및 Ask For It 양식을 사용하여 의견을 제출할 수 있습니다. 폼 아래쪽에 있는 이 열의 .에 대한 링크 모음도
모두 확대 | 모두 축소

이 페이지에서

소개

안녕! Parag, 이것은 및 1년 이상에 대한 이제 Microsoft ASP.NET 지원 그룹과 작업 지원 엔지니어는 싶습니다. Microsoft 가입 전에 저는 웹 기반 프로젝트 및 데스크톱 응용 프로그램을 Microsoft 기술을 사용하여 작동했습니다. 고객에게 품질 지원을 제공하는 동안 필자는 사용자 지정 컨트롤 주위에 혼란을 발생했습니다 위치와 마찬가지로 사용자 지정 컨트롤 주위의 일부 개념을 설명하는 데 시간이 걸릴 싶습니다 경우 본 적이 있을 것입니다. 모양대로, 알림, 잘못된 것으로 생각되는 이를 중단 가져올 일단 더 나은 위치를 ASP.NET 것을 원하지 표시됩니다.

개요

이번 달 칼럼에서는 다음 항목을 설명합니다.
  • 사용자 정의 컨트롤은 무엇입니까?
  • 사용자 지정 컨트롤을 무엇입니까?
  • 사용자 정의 컨트롤 및 사용자 지정 컨트롤을 기본적인 차이점은 무엇입니까?
몇을 가지 상태 관리 및 사용자 지정 컨트롤의 렌더링을 같은 사용자 지정 컨트롤이 관련된 고급 항목에 또한 소개합니다 것입니다.

사용자 정의 컨트롤은 무엇입니까?

사용자 컨트롤의 사용자 지정, 재사용 가능한 컨트롤 및 HTML 및 웹 서버 컨트롤에서 사용하는 동일한 기술을 사용합니다. 사용자가 ASP.NET 웹 응용 프로그램 간에 공용 사용자 인터페이스를 분할하고 쉬운 방법을 제공합니다. 사용자가 Web Forms 페이지를 사용할 수 있는 동일한 Web Forms 프로그래밍 모델을 사용합니다. Web Forms 프로그래밍 모델에 대한 자세한 내용은 다음 MSDN) Microsoft 개발자 네트워크 (웹 사이트를 방문하십시오.
Web Forms 페이지는 소개
http://msdn2.microsoft.com/en-us/library/65tcbxz3(vs.71).aspx

웹 양식 코드 모델
http://msdn2.microsoft.com/en-us/library/015103yb(vs.71).aspx

사용자 정의 컨트롤을 만드는 방법

사용자 정의 컨트롤을 만드는 데 사용할 구문을 사용하여 Web Forms 페이지 (.aspx) 만들 수 있는 구문을 비슷합니다. 유일한 차이점은 사용자 정의 컨트롤, <html>포함할 것입니다 <body>, 및 요소 사용자 정의 컨트롤을 호스팅하는 Web Forms 페이지를 이후 <form>. 사용자 정의 컨트롤을 만들려면 다음과 같이 하십시오.
  1. 텍스트 또는 HTML 편집기에서 열고 모든 속성, 메서드 및 이벤트를 노출하는 서버측 코드 블록을 만듭니다.
    <script language="C#" runat="server">
       public void button1_Click(object sender, EventArgs e)
       {
          label1.Text = "Hello World!!!";
       }
    </script>
    
  2. 사용자 정의 컨트롤의 사용자 인터페이스를 만듭니다.
    <asp:Label id="label1" runat="server"/>
     <br><br>
    <asp:button id="button1" text="Hit" OnClick="button1_Click" runat="server" />
    

Web Forms 페이지에서 사용자 정의 컨트롤을 사용하는 방법

  1. 새 Web Forms 페이지 (.aspx) Microsoft Visual Studio .NET 2002, Microsoft Visual Studio .NET 2003, Microsoft Visual Studio 2005, 또는 다른 텍스트 편집기를 만듭니다.
  2. @ Register 지시문을 선언하십시오. 예를 들어, 다음 코드를 사용하십시오.
    <%@ Register TagPrefix="UC" TagName="TestControl" Src="test.ascx" %>
    사용자 정의 컨트롤을 Web Forms 페이지의 같은 위치에 있는 참고 가정합니다.
  3. Web Forms 페이지에서 사용자 정의 컨트롤을 사용하려면 @ Register 지시문을 뒤에 다음 코드를 사용하십시오.
    <html>
        <body>
              <form runat="server">
                   <UC:TestControl id="Test1" runat="server"/>
              </form>
        </body>  
    </html>
    

코드 숨김 파일에 Web Forms 페이지의 사용자 컨트롤의 인스턴스를 프로그래밍 방식으로 만드는 방법

이전 예제에서는 @ Register 지시문을 사용하여 Web Forms 페이지에서 선언적으로 사용자 정의 컨트롤에 인스턴스화할. 그러나 사용자 정의 컨트롤을 동적으로 인스턴스화하는 및 페이지에 추가할 수 있습니다. 해당 작업을 수행하는 단계는 다음과 같습니다.
  1. Visual Studio에서 새 Web Forms 페이지를 만듭니다.
  2. 코드 숨김 파일에 대해 이 Web Forms 페이지에서 생성된 이동하십시오.
  3. Page 클래스는 Page_Load 이벤트 쓰기 다음 code.
    // Load the control by calling LoadControl on the page class.
    Control c1 = LoadControl("test.ascx");
                
    // Add the loaded control in the page controls collection.	
    Page.Controls.Add(c1);
    
    노트 페이지 수명 주기의 특정 이벤트를 시 사용자 정의 컨트롤을 동적으로 추가할 수 있습니다.

    자세한 내용은 다음 웹 사이트를 방문하십시오.
    Web Forms 페이지를 프로그래밍 방식으로 컨트롤 추가
    http://msdn2.microsoft.com/en-us/library/kyt0fzt1(vs.71).aspx

    컨트롤 실행 주기
    http://msdn2.microsoft.com/en-us/library/aa719775(vs.71).aspx

    동적 웹 컨트롤, 포스트백과 Scott Mitchell에 의해 뷰 상태
    http://aspnet.4guysfromrolla.com/articles/092904-1.aspx

사용자 정의 컨트롤이 처리되는 방식을

사용자 정의 컨트롤이 포함된 페이지가 요청될 때 다음 현상이 발생합니다.
  • 페이지 파서는 @ Register 지시문 Src 특성에 지정된 .ascx 파일을 구문 분석하고 System.Web.UI.UserControl 클래스에서 파생되는 클래스를 생성합니다.
  • 파서에서 다음 클래스를 어셈블리로 동적으로 컴파일합니다.
  • Visual Studio를 사용하는 경우 다음 디자인 타임에 Visual Studio 코드 숨김 파일에 대한 사용자 정의 컨트롤 만들고 파일을 디자이너에 의해 미리 컴파일된.
  • 마지막으로, 동적 코드 생성 및 컴파일 프로세스를 통해 생성된 사용자 정의 컨트롤의 클래스 코드 숨김 파일에 대한 코드 포함됩니다 (. 되도록) 뿐만 아니라 .ascx 파일 내에서 작성된 코드를.

사용자 지정 컨트롤을 무엇입니까?

일반적인 Web Form 또는 사용자 정의 컨트롤의 경우와 마찬가지로 사용자 지정 컨트롤을 서버에서 실행하고 개체 모델을 노출하는 태그 텍스트 (예: HTML 또는 XML을 렌더링하는 컴파일된 코드 구성 요소입니다.

사용자 지정 컨트롤에 대한 기본 클래스 선택 방법

사용자 지정 컨트롤을 작성할 수 사용자가 직접 또는 간접적으로 새 클래스 System.Web.UI.Control 클래스 또는 System.Web.UI.WebControls.WebControl 클래스를 파생시키는 합니다.
  • 비시각적 요소를 렌더링하도록 제어하려면 System.Web.UI.Control 에서 파생되어야 합니다. 예를 들어, <meta>및 <head>비시각적 렌더링 예입니다.
  • 클라이언트 컴퓨터의 시각적 인터페이스를 생성하는 HTML 렌더링하도록 제어하려면 System.Web.UI.WebControls.WebControl 에서 파생되어야 합니다.
단추 또는 레이블, 같은 기존 컨트롤의 기능을 변경하려는 경우 직접 이러한 기존 클래스에서 새 클래스를 파생시킬 수 및 기본 동작을 변경할 수 있습니다.

간단히, 컨트롤 클래스 기준이 페이지 클래스에 대한 컨트롤 트리에서 넣을 수 있는 기본 기능을 제공합니다. WebControl 클래스 클라이언트 컴퓨터에서 시각적 콘텐츠를 표시하기 위한 기본 컨트롤 클래스 기능을 추가합니다. 예를 들어, WebControl 클래스는 모양과 스타일 같은 글꼴, 색 및 높이 속성을 통해 제어할 수 있습니다.

Visual Studio를 사용하여 System.Web.UI.Control에서 확장하는 간단한 사용자 지정 컨트롤을 사용하는 방법

  1. Visual Studio 시작하십시오.
  2. 클래스 라이브러리 프로젝트를 만들고 이름을, 예를 들어, CustomServerControlsLib 지정하십시오.
  3. 예를 들어, SimpleServerControl.cs 프로젝트 소스 파일을 추가하십시오.
  4. 참조 절에서 System.Web 네임스페이스에 대한 참조를 포함하십시오.
  5. 다음 네임스페이스에 있는 SimpleServerControl.cs 파일을. 의
    System
    System.Collections
    System.ComponentModel
    System.Data
    System.Web
    System.Web.SessionState
    System.Web.UI
    System.Web.UI.WebControls
    
    포함되는지 여부를 확인하십시오.
  6. SimpleServerControls 클래스와를 Control 기본 클래스에서 상속하십시오.
    public class SimpleServerControl : Control
  7. 출력을 출력 스트림에 쓸 Render 메서드를 재정의하십시오.
    protected override void Render(HtmlTextWriter writer) 
    {
    	 writer.Write("Hello World from custom control");
    }
    
    참고 HTML 텍스트 스트림에 쓰는 기능을 HtmlTextWriter 클래스가 있습니다. Write 메서드는 HtmlTextWriter 클래스의 HTTP 응답 스트림에 지정된 텍스트 출력하고, Response.Write 메서드는 동일합니다.
  8. 클래스 라이브러리 프로젝트를 컴파일하십시오. DLL 출력을 생성합니다.
  9. 기존 열거나 새 ASP.NET 웹 응용 프로그램 프로젝트를 만듭니다.
  10. 사용자 지정 컨트롤을 사용할 수 있는 Web Forms 페이지에 추가하십시오.
  11. ASP.NET 프로젝트 참조 섹션에 클래스 라이브러리에 대한 참조를 추가하십시오.
  12. Web Forms 페이지에서 사용자 지정 컨트롤을 등록하십시오.
    <%@ Register TagPrefix="CC " Namespace=" CustomServerControlsLib " Assembly="CustomServerControlsLib " %>
  13. 인스턴스화하거나 Web Forms 페이지에서 사용자 지정 컨트롤을 사용하는 <form>태그 코드의 다음 줄을 추가하십시오.
    <form id="Form1" method="post" runat="server">
        <CC:SimpleServerControl id="ctlSimpleControl" runat="server">
        </CC:SimpleServerControl >
    </form>
    
    참고 이 코드에서 SimpleServerControl 클래스 라이브러리 내의 컨트롤 클래스 이름입니다.
  14. Web Forms 페이지를 실행하고 사용자 정의 컨트롤 출력을 볼 수 있습니다.
Visual Studio를 사용하는 경우 다음 단계를 수행해야 합니다.
  1. 텍스트 편집기를 엽니다.
  2. SimpleServerControl.cs, 명명된 파일을 만들고 지정된 1-14 코드를 작성하십시오.
  3. PATH 변수에 다음 경로를 추가하십시오.
    (winnt)\Microsoft.Net\Framework\v1.1.4322 c:\windows
  4. 명령 프롬프트를 시작하고 SimpleServerControl.cs 있는지 위치로 이동하십시오.
  5. 다음 명령을 실행하십시오.
    csc/t:library/out: CustomServerControlsLib. SimpleServerControl.dll/r:System.dll/r:System.Web.dll SimpleServerControl.cs
    C# 컴파일러 (csc.exe)에 대한 자세한 내용은 다음 MSDN 웹 사이트를 방문하십시오.
    http://msdn2.microsoft.com/en-us/library/1700bbwd(vs.71).aspx
  6. Web Forms 페이지에서 사용자 지정 컨트롤을 실행하려면 다음과 같이 하십시오.
    1. wwwroot 폴더 아래에 디렉터리를 만듭니다.
    2. Microsoft 인터넷 정보 서비스(IIS) 관리자를 시작하고 가상 루트 디렉터리 새 디렉터리를 표시하십시오.
    3. 새 디렉터리 아래에 Bin 폴더를 만듭니다.
    4. 사용자 지정 컨트롤 DLL을 Bin 폴더로 복사하십시오.
    5. 새 디렉터리 내의 이전 단계에서 만든 예제 Web Forms 페이지를 배치하십시오.
    6. IIS 관리자에서 예제 페이지를 실행하십시오.
간단한 사용자 지정 컨트롤을 작성한 것을 속성을 노출하는 사용자 지정 컨트롤을 디자인 타임 특성을 적용하는 방법을 살펴보겠습니다.

사용자 지정 컨트롤의 속성을 노출하는 방법을

앞의 예제에서는 빌드 을 및 Web Forms 페이지에서 사용자 지정 컨트롤을 사용하는 동안 구성할 수 있는 하나 이상의 속성을 소개합니다.

다음 예제에서는 특정 여러 번 컨트롤의 속성에 지정된 대로 컨트롤에서 메시지를 표시할 속성을 정의하는 방법을 보여 줍니다.
  1. SimpleServerControl.cs 텍스트 편집기에서 엽니다.
  2. SimpleServerControl 클래스에서 속성을 추가하십시오. SimpleServerControl
    public class SimpleServerControl : Control
    {
       private int noOfTimes;
       public int NoOfTimes
       {
           get { return this.noOfTimes; }
           set { this.noOfTimes = value; }
       } 
       protected override void Render (HtmlTextWriter writer)
       {
         for (int i=0; i< NoOfTimes; i++)
         {
           write.Write("Hello World.."+"<BR>");
         } 
       }
    }
    
  3. 사용자 지정 컨트롤을 컴파일하십시오.
  4. Web Forms 페이지에서 사용자 지정 컨트롤을 사용하려면 컨트롤 선언에 새 속성을 추가하십시오.
    <CC:SimpleServerControl id="ctlSimpleControl" NoOfTimes="5" runat="server"></CC:SimpleServerControl>
  5. 페이지가 실행되는 "컨트롤 속성에서 지정한 메시지 Hello 세계를" 사용자 지정 컨트롤에서 여러 번 것으로 표시합니다.

사용자 지정 컨트롤의 디자인 타임 특성은 적용하는 방법

디자인 타임 특성은 필요한 이유는
이전 예제에서 만든 사용자 지정 컨트롤이 예상대로 작동합니다. 그러나 Visual Studio에서 해당 컨트롤을 사용할 경우 NoOfTimes 속성은 속성 창에서 디자인 타임에 사용자 지정 컨트롤을 선택할 때마다 자동으로 강조 사용할 수 있습니다.

이렇게 특성을 라는 Visual Studio에서 기능을 사용하여 수행할 수 Visual Studio 메타데이터 정보를 제공해야 합니다. 특성 클래스, 메서드, 속성 또는 필드를 정의할 수 있습니다. Visual Studio 사용자 지정 컨트롤 클래스를 로드할 때 클래스, 메서드, 속성 또는 필드 수준에 정의된 모든 특성을 확인하고 그에 따라 디자인 타임에 사용자 지정 컨트롤의 동작을 변경합니다.

특성에 대한 자세한 내용을 보려면 다음 MSDN 웹 사이트를 방문하십시오.
http://msdn2.microsoft.com/en-us/library/Aa288059(VS.71).aspx
이제 일반적으로 사용합니다 예제 빌드 특성을 사용하는:
  1. SimpleServerControl.cs 텍스트 편집기에서 엽니다.
  2. 일부 기본 특성은 클래스 수준에서 DefaultProperty, ToolboxDataTagPrefixAttrbute 소개하십시오. 이러한 세 특성은 우리는 우리의 샘플을 빌드하는 것입니다.
            [
    	// Specify the default property for the control.		
    	DefaultProperty("DefaultProperty"),
    	
    	// Specify the tag that is written to the aspx page when the
            // control is dragged from the Toolbox to the Design view. 
    	// However this tag is optional since the designer automatically 
    	// generates the default tag if it is not specified.		
    	ToolboxData("<{0}:ControlWithAttributes runat=\"server\">" +
    		"</{0}:ControlWithAttributes>")
    	]
    	public class ControlWithAttributes : Control
    	{
    		private string _defaultProperty;
    		public string DefaultProperty
    		{
    			get { return "This is a default property value"; }
    			set { this._defaultProperty = value; }
    		}
    
    		protected override void Render(HtmlTextWriter writer)
    		{
    			writer.Write("Default Property --> <B>" + 
    			DefaultProperty + "</B>");
    		}
             }
    
  3. TagPrefixAttrbute 라는 이상의 태그가 있습니다. 태그 접두사에 디자이너에 도구 상자에서 컨트롤을 끌어 놓으면 제공하는 어셈블리 수준 특성은 입니다. 그렇지 않으면, 디자이너는 기본적으로 접두사를 "cc1" 같은 생성합니다. TagPrefixAttrbute 해당 컨트롤 클래스에서 직접 적용되지 않습니다. TagPrefixAttrbute 적용 AssemblyInfo.cs 열 코드의 다음 줄을 포함하고 있는 명령줄을 사용하여 소스 빌드 하려면 해당 프로젝트를.
    [assembly:TagPrefix("ServerControlsLib ", "MyControl")]
    노트 다시 AssemblyInfo.cs 파일을 만들고 모든 소스 파일을 포함하는 디렉터리에 있는 파일을 배치할 컨트롤을 빌드하려면 다음 명령을 실행하여 합니다:
    > csc/t:library/out: ServerControlsLib.dll/r:System.dll/r: System.Web.dll *.cs

사용자 정의 컨트롤 및 사용자 지정 컨트롤을 기본적인 차이점은 무엇입니까?

사용자 컨트롤 및 사용자 지정 컨트롤 정의 및 만드는 방법에 대한 기본 개념은 만들었으므로 있는 빠른 두 간의 차이를 살펴보겠습니다.
표 축소표 확대
요소사용자 정의 컨트롤사용자 지정 컨트롤
배포단일 응용 프로그램 시나리오에 대해 디자인된

배포된 응용 프로그램의 소스 코드를 함께 원본 양식 (.ascx)

같은 컨트롤 하나 이상의 응용 프로그램에서 사용해야 하는 경우 이를 중복 및 유지 관리 문제를 소개하십시오
하나 이상의 응용 프로그램에서 사용할 수 있도록 디자인된

응용 프로그램의 Bin 디렉터리 또는 전역 어셈블리 캐시에 배포된

쉽게 및 중복 및 유지와 관련된 문제 없이 분산
만들기Web Forms 페이지를 만든; (RAD) 신속한 응용 프로그램 개발을 위한 최적의 방법을 비슷한 만들기디자이너 지원 때문에 많은 양의 코드 쓰기 작업이 포함됩니다.
콘텐츠고정된 레이아웃 내에서 정적 콘텐츠가 필요할 때 훨씬 더 나은, 예를 들어 때 사용하면 머리글 및 바닥글 선택하게자세한 것에 대한 동적 응용 프로그램에 필요한 경우 적합한 표시할 콘텐츠, 동적 행 테이블을 컨트롤과 데이터 바인딩된에 대한 응용 프로그램 간에 예를 들어, 재사용할 수 있습니다.
디자인디자인 타임에 작성되어 주로 정적 데이터가 포함되어 있기 때문에 많은 응용 프로그램 디자인에 쓰기 필요처음부터 쓰기 컨트롤의 수명 주기 및 일반적으로 찍은 사용자 컨트롤에서 처리합니다. 순서를 이벤트가 실행되는 좋은 알고를 있어야 합니다.

고급 항목

그런 다음, 몇 가지 사용자 지정 컨트롤을 개발하는 동안 사용할 수 있는 고급 기능 살펴보겠습니다.

상태 관리

웹 응용 프로그램은 상태 비저장 수 있는 HTTP이 빌드됩니다. 페이지 및 해당 자식 컨트롤을 요청할 때마다 만들어지며 요청이 끝난 후 삭제해야 합니다. 기존의 ASP 프로그래밍의 상태를 유지하기 위해 세션 및 응용 프로그램 개체를 사용합니다. 하지만 그에 대한 많은 코딩 작업을 합니다. 이 문제를 방지하려면 ASP.NET 여러 요청 간에 상태를 유지하기 위해 뷰 상태를 라는 메커니즘을 제공합니다. 상태 관리 및 보기 상태에 대한 자세한 내용을 보려면 다음 MSDN 웹 사이트를 방문하십시오.
Web Forms 상태 관리 소개
http://msdn2.microsoft.com/en-us/library/75x4ha6s(vs.71).aspx

ASP.NET 뷰 상태
http://msdn.microsoft.com/msdnmag/issues/03/02/cuttingedge/default.aspx

뷰 상태를 사용하여 값을 저장하는 Web Forms 페이지
http://msdn2.microsoft.com/en-us/library/4yfdwycw(vs.71).aspx
사용자 지정 컨트롤의 뷰 상태를 사용하여 예제
ViewStateExample.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Text;

namespace ServerControlLib
{
	/// <summary>
	/// When a page framework reloads this control after postback, it   
        /// will restore the values which are in view state.
	/// This control can easily perform state management without 
        /// implementing our own logic for maintaining the state.
	/// </summary>
	public class ViewStateExample : WebControl
	{
		// Text to be displayed in Text box control.
		private string _text;
		
		/*
		 * This property needs to be populated before every 
                 * postback in order to 
		 * retain its value.
		*/ 
		public string Text
		{
			get { return (_text == null) ? "_text property is empty"  : _text; }
			set { _text = value; }
		}

		/*
		 * This property needs to be filled once and should be 
                 * available on the successive postbacks.
		*/ 
		public string TextInViewState
		{
			get
			{
				object o = ViewState["TextInViewState"];
				return (o == null) ? "View state is empty" : (string)o;
			}
			set { ViewState["TextInViewState"] = value; } 
		}

		/*
		 * Over-ridden method on WebControl base class which                   
                 * displays both of the property values 
		 * i.e. one stored in view state and other which is not 
                 * saved in view state.
		*/
		protected override void RenderContents(HtmlTextWriter writer)
		{
			writer.Write("Text Without View State = ");
			writer.Write(Text);
			writer.Write("<hr><br>");
			writer.Write("Text In View State = ");
			writer.Write(TextInViewState);
		}
	}
}
Web Forms 페이지에서 이전 컨트롤을 사용하는 예제
ViewStateExampleDemo.aspx
<%@ Page Language="C#" %>
<%@ Register TagPrefix="CC" Namespace="ServerControlLib" Assembly = "ServerControlLib" %>

<html>
  <head>
    <script runat="server">
      void button1_Click(object sender, EventArgs e)
      {
          Control1.Text = textbox1.Text;
          Control1.TextInViewState = textbox2.Text;
      }
    </script>
  </head>
  <body>
    <form runat="server" ID="Form1">
      <br>
      Property Value Without View State: <asp:TextBox id="textbox1" 
        runat="server" />
      <br>
      Property Value with View State: <asp:TextBox id="textbox2" 
        runat="server" />

      <asp:Button text="Cause Postback" onClick="button1_Click" 
        id="button1" Runat="server" />

      Output from the ViewStateExample Control :
      <CC:ViewStateExample id="Control1" runat="server"/>
    </form>
  </body>
</html>

렌더링

이 섹션에서 간단히 컨트롤 클래스 또는 WebControl 클래스 중 하나에서 사용자 지정 컨트롤을 파생시킬 때 재정의해야 하는 방법을 설명하겠습니다.
System.Web.UI.Control 클래스의 메서드를 렌더링
System.Web.UI.Control 클래스 렌더링 방법에 대한 내용은 다음 MSDN 웹 사이트를 방문하십시오.
Control.Render 메서드
http://msdn2.microsoft.com/en-us/library/system.web.ui.control.render(vs.71).aspx

Control.RenderControl 메서드
http://msdn2.microsoft.com/en-us/library/system.web.ui.control.rendercontrol(vs.71).aspx

Control.RenderChildren 메서드
http://msdn2.microsoft.com/en-us/library/system.web.ui.control.renderchildren(vs.71).aspx
페이지에 컨트롤이 렌더링되는 방식을
모든 페이지에는 해당 페이지의 모든 자식 컨트롤의 컬렉션을 나타내는 컨트롤 트리가 있습니다. 컨트롤 트리를 렌더링할 수 HtmlTextWriter 클래스의 개체를 만들어집니다 HTML 클라이언트 컴퓨터에서 렌더링될 수 있습니다. 해당 개체의 RenderControl 메서드에 전달됩니다. 결과적으로 RenderControl 메서드는 Render 메서드를 호출합니다. 그런 다음 Render 메서드를 컬렉션의 끝에 도달할 때까지 재귀 루프를 만들어 각 자식 컨트롤에 대한 RenderChildren 메서드를 호출합니다. 이 프로세스는 통해 다음 예제 코드에서는 가장 잘 설명되어 있습니다. 공용
public void RenderControl(HtmlTextWriter writer) 
{
    // Render method on that control will only be called if its visible property is true.
    if (Visible)
    {
        Render(writer);
    }
}

protected virtual void Render(HtmlTextWriter writer) 
{
    RenderChildren(writer);
}
protected virtual void RenderChildren(HtmlTextWriter writer) 
{
    foreach (Control c in Controls) 
    {
        c.RenderControl(writer);
    }
} 
System.Web.UI.WebControl 클래스의 메서드를 렌더링
System.Web.UI.WebControl 클래스 렌더링 방법에 대한 내용은 다음 MSDN 웹 사이트를 방문하십시오.
WebControl.RenderBeginTag 메서드
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.renderbegintag(vs.71).aspx

WebControl.RenderContents 메서드
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.rendercontents(vs.71).aspx

WebControl.RenderEndTag 메서드
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.renderendtag(vs.71).aspx
WebControl 클래스의 렌더링 이루어지는 방법
다음 코드 예제에서는 사용자 지정 컨트롤의 Render 메서드를 보여 줍니다.
protected override void Render(HtmlTextWriter writer)
{
    RenderBeginTag(writer);
    RenderContents(writer);
    RenderEndTag(writer);
}
WebControl 클래스에 대해 Render 메서드를 재정의할 필요가 없습니다. WebControl 클래스 내에서 콘텐츠를 렌더링할 경우 RenderContents 메서드를 재정의해야 합니다. 그러나 Render 메서드를 재정의해야 할 경우 이전 코드 예제와 같이 특정 순서로 RenderEndTag 메서드 뿐만 아니라 RenderBeginTag 메서드를 재정의해야 합니다.

결론

모든 사용자 정의 컨트롤 및 ASP.NET 1.0 및 1.1에서는 ASP.NET 사용자 정의 컨트롤에 이제. 이 열 및 이를 개발하기 위해 취할 수 있는 다양한 접근 기본적인 차이점을 이해하는 데 도움이 됩니다 것이 좋겠습니다.

시간 주셔서 감사합니다. 상태 관리, 컨트롤의 스타일, 합성 컨트롤 및 사용자 지정 컨트롤에 대한 디자인 타임 지원 등의 사용자 지정 컨트롤에 대한 고급 항목에 대한 자세한 가까운 장래에 쓸 수 있어야 합니다.

컨트롤에 대한 자세한 내용은 다음 MSDN 웹 사이트를 방문하십시오.
ASP.NET 서버 컨트롤 개발 기본 사항
http://msdn2.microsoft.com/en-us/library/aa310918(vs.71).aspx

사용자 정의 컨트롤의 광범위한 시험
http://msdn2.microsoft.com/en-us/library/ms972975.aspx

문서 템플릿 기반 사용자 지정 ASP.NET 서버 컨트롤
http://msdn2.microsoft.com/en-us/library/Aa478964.aspx

ASP.NET 서버 컨트롤 이벤트
http://msdn2.microsoft.com/en-us/library/aa720049(vs.71).aspx

사용자 정의 컨트롤의 비교 합성 컨트롤
http://msdn2.microsoft.com/en-us/library/aa719735(vs.71).aspx

ASP.NET 서버 컨트롤을 개발하는
http://msdn2.microsoft.com/en-us/library/aa719973(vs.71).aspx

사용자 지정 컨트롤을 개발하는: 개념을 키
http://msdn2.microsoft.com/en-us/library/aa720226(vs.71).aspx

ASP.NET 컨트롤에 디자인 타임 지원 추가
http://msdn2.microsoft.com/en-us/library/Aa478960.aspx
항상 Ask For It 양식을 사용하여 기술 자료를 또는 향후 열이 해결된 원하는 주제에 대한 아이디어를 제출할 바랍니다.

속성

기술 자료: 893667 - 마지막 검토: 2007년 11월 14일 수요일 - 수정: 1.8
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
키워드:?
kbmt kbhowto kbasp KB893667 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com