Asp.net에서 서버 컨트롤을 만드는 방법은 Windows Form 컨트롤과 동일합니다.
1. 사용자 제어
2. Control 및 WebControl에서 파생된 사용자 정의 컨트롤
3. 기존 Asp.net 서버 컨트롤에서 확장
사용자 컨트롤은 .ascx 확장자를 가지며 텍스트 파일로 저장됩니다. 사용자 컨트롤은 Control 및 WebControl에서 파생된 서버 컨트롤처럼 미리 컴파일될 필요가 없습니다. 사용자 컨트롤이 .aspx 페이지에서 사용되는 경우 페이지 파서는 . aspx 파일에서 생성되어 어셈블리로 컴파일됩니다. 장점은 다음과 같습니다. 코드 재사용을 해결하고 각 사용자 컨트롤에는 고유한 개체 모델이 있으며 작성 언어는 .aspx 페이지의 언어와 관련이 없습니다.
기존 Asp.net 서버 제어에서 확장하여 개발 및 최종 사용자의 요구 사항을 충족하기 위해 주로 .net 기본 서버 제어 기능을 향상시킵니다.
Control 및 WebControl에서 파생된 사용자 지정 컨트롤은 컴파일된 클래스 라이브러리 형식으로 배포됩니다.
본 시리즈에서는 위의 1과 3에 대해서는 설명하지 않고 Control과 WebControl에서 파생된 서버 컨트롤만 설명합니다.
사용자 정의 컨트롤을 작성하려면 Control과 WebControl만 상속하면 됩니다. Control은 IComponent 인터페이스를 구현했으며 WebControl 자체는 Control에서 파생되므로 구성 요소의 시각적 디자인도 지원합니다.
Render 메서드 및 HtmlTextWriter 클래스 Control 클래스에서 Asp.net 서버 컨트롤을 파생할 때 Control 클래스는 오버로드 가능한 Render 및 HtmlTextWriter 유형의 인스턴스를 제공합니다. Render 메서드는 서버 컨트롤 콘텐츠를 제공된 개체로 보냅니다. HtmlTextWriter 개체와 HtmlTextWriter는 HTML 텍스트 스트림을 작성하는 기능을 캡슐화합니다.
시스템 사용; System.Collections.Generic을 사용합니다. System.Text 사용;
네임스페이스 ClassLibrary1 { 공개 클래스 Control1 : System.Web.UI.Control { 보호된 재정의 무효 렌더(System.Web.UI.HtmlTextWriter 작가) { writer.Write("나 여기 있어요."); } }
공개 클래스 Control2 : System.Web.UI.WebControls.WebControl { 보호된 재정의 무효 렌더(System.Web.UI.HtmlTextWriter 작가) { writer.Write("나도 여기에 있어요."); } } } |
위의 코드에서는 Control과 WebControl에서 각각 상속되는 Control1과 Control2를 정의합니다. 그렇다면 이들 사이의 근본적인 차이점은 무엇입니까? 먼저 다음 효과를 살펴보세요.
위의 효과에서 차이점을 확인하는 것은 어렵지 않습니다. WebControl 클래스는 글꼴, 높이, 배경색 등과 같은 속성을 통해 스타일을 지원합니다. 그렇다면 언제 Control에서 파생하도록 선택하고 언제 WebControl에서 파생하도록 선택합니까? 컨트롤이 비시각적 요소를 생성하거나 HTML이 아닌 클라이언트에 표시하려는 경우 SqlDataSource와 같은 Control에서 파생됩니다. 클라이언트에 시각적 HTML을 제공하려면 TextBox와 같은 WebControl에서 파생됩니다. .