ControlAdapter 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
어댑터가 연결될 파생 컨트롤의 렌더링을 사용자 지정하여 특정 브라우저의 기본 태그나 동작을 수정합니다. 모든 컨트롤 어댑터가 상속하는 기본 클래스입니다.
public ref class ControlAdapter abstract
public abstract class ControlAdapter
type ControlAdapter = class
Public MustInherit Class ControlAdapter
- 상속
-
ControlAdapter
- 파생
설명
컨트롤 어댑터는 브라우저 또는 태그 관련 처리를 허용하도록 실행 수명 주기에서 특정 Control 클래스 메서드 및 이벤트를 재정의하는 구성 요소입니다. 이 .NET Framework 각 클라이언트 요청에 대한 개체에 Control 단일 파생 컨트롤 어댑터를 매핑합니다.
어댑터는 특정 브라우저 또는 브라우저 클래스에 대한 컨트롤을 수정하거나 일부 기능에 대한 임의 필터 역할을 합니다. 일반적으로 어댑터는 브라우저에서 사용하는 태그 언어(예: XHTML 또는 HTML 3.2)로 정의됩니다. 파생 되는 특수 클래스에 캡슐화 할 수 있습니다의 렌더링 동작에서을 HtmlTextWriter 클래스입니다. 따라서 여러 브라우저 클래스 동작에 단일 어댑터를 사용할 수 있거나 클래스에 HtmlTextWriter 적응성을 포함하면 컨트롤 어댑터를 사용할 필요가 없게 될 수 있습니다.
더 특수한 어댑터가 없는 한 컨트롤 클래스의 어댑터는 해당 클래스에서 상속되는 모든 컨트롤에 적용됩니다. 예를 들어 클래스의 어댑터는 모든 Validator
개체에 BaseValidator 사용할 수 있습니다.
어댑터는 일반적으로 클래스에서 ControlAdapter 직접 상속되지 않지만 컨트롤 유형 및 대상 브라우저 또는 필요한 특정 렌더링과 관련된 추가 기능을 제공하는 대상별 어댑터 기본 클래스 중 하나에서 상속됩니다.
컨트롤 자체는 어댑터를 반드시 필요 하지 않습니다. 컴퍼지션을 통해 컨트롤을 확장하면 일반적으로 자식 컨트롤 어댑터로 충분합니다.
각 컨트롤에.browser 정의 파일을 통해 어댑터에 대 한 명시적인 매핑이 있습니다. 따라서 속성에 Control.Adapter 대한 액세스는 브라우저 정의 파일에서 추출된 개체를 사용하여 HttpBrowserCapabilities 제어할 어댑터의 매핑에 대한 조회를 수행합니다.
처리 하는 동안.NET Framework 대상에 관련 될 수 있는 컨트롤의 재정의 가능한 메서드를 호출을 차단 합니다. 컨트롤 어댑터가 연결 되 면.NET Framework는 연결 된 어댑터 메서드를 호출 합니다.
어댑터는 메서드를 통해 컨트롤에 대한 렌더링을 Render 수행합니다. 재정의된 Render 경우 메서드에서 다시 Control.Render 호출을 수행하므로 기본 클래스 구현을 호출하면 안 됩니다. 이로 인해 렌더링이 어댑터에서 한 번, 컨트롤에 의해 한 번 두 번 발생할 수 있습니다.
기본 메서드는 Render 컨트롤의 메서드를 Control.Render 다시 호출합니다. 따라서 재정 Render의하는 경우 구현하는 렌더링이 컨트롤에서 제공하는 Control.Render 렌더링과 추가되지 않는 한 기본 클래스 구현을 호출해서는 안 됩니다.
.NET Framework 자식 컨트롤의 어댑터에 대한 가로채기를 수행하는지 확인해야 합니다. 재정의에서 컨트롤의 메서드를 RenderChildren 호출하는 기본 메서드를 호출 Control.RenderChildren 하여 이 작업을 수행할 수 있습니다 Render .
및 EndRender 메서드는 BeginRender 컨트롤이 메서드를 호출하기 바로 전과 후(각각) 컨트롤에 Render 의해 호출됩니다. 사전 및 사후 렌더링이 필요한 유일한 브라우저별 처리 작업인 경우 이를 사용하여 BeginRender EndRender 재정 Render의할 필요가 없게 만들 수 있습니다. 및 EndRender 메서드의 BeginRender 기본 동작은 해당 메서드를 호출하는 HtmlTextWriter것입니다.
자체 상태 정보를 유지하기 위해 컨트롤 어댑터는 , LoadAdapterControlState및 SaveAdapterViewStateLoadAdapterViewState 메서드를 재정의SaveAdapterControlState할 수 있습니다. SaveAdapterControlState, SaveAdapterViewState, LoadAdapterControlState및 LoadAdapterViewState 프라이빗 컨트롤 및 뷰 상태가 각각 저장되고 로드될 때 호출됩니다.
, OnLoadOnPreRender및 OnUnload 기본 메서드는 OnInit해당 Control 클래스 메서드를 다시 호출합니다. 따라서 재정의되는 이러한 ControlAdapter 메서드는 기본 메서드를 호출해야 합니다. 그렇지 않으면 클래스 메서드와 Control 연결된 이벤트가 발생하지 않습니다.
컨트롤 및 어댑터는 선택적으로 및 IPostBackEventHandler 인터페이스를 IPostBackDataHandler 구현합니다. .NET Framework 어댑터가 있는지 여부와 어댑터가 이러한 인터페이스를 구현하는지 여부를 결정합니다. 이 경우 어댑터는 필요에 따라 , RaisePostDataChangedEvent및 RaisePostBackEvent 메서드를 재정의LoadPostData해야 합니다. 포스트백 데이터가 어댑터에서 인식되지 않는 경우 제어를 다시 호출하여 처리해야 합니다. 후속 이벤트 처리기도 컨트롤에서 다시 호출해야 합니다.
구현자 참고
클래스에서 ControlAdapter 상속하는 경우 일반 어댑터 기능이 필요한 컨트롤에는 패턴 ControlType
Adapter
(예 TextBoxAdapter
: )에 명명된 해당 어댑터 기본 클래스가 있어야 합니다. 어댑터는 최소한 해당 Control 속성을 통해 강력한 형식의 컨트롤 인스턴스를 반환해야 합니다.
- 지정된 컨트롤 형식 및 태그 언어에 대한 컨트롤 어댑터의 이름은 패턴
MarkupControlType
Adapter
(예:XhtmlTextBoxAdapter
)으로 지정해야 합니다. 컨트롤의 어댑터는 하위 이름 영역에서Adapters
구현되어야 합니다.
컨트롤 어댑터는 적절한 기본 클래스에서 상속하고 컨트롤과 동일한 상속 모델을 따라야 합니다. 예를 들어 기본 클래스에서 상속되는 컨트롤의 Control 어댑터는 클래스 또는 관련 ControlType
Adapter
클래스에서 ControlAdapter 상속되어야 합니다.
특수화 된 어댑터는 모든 디바이스 노드의 구성.browser 파일에 있는 특수 한 컨트롤에 대해 정의 되어야 합니다.
제대로 구현된 컨트롤은 어댑터가 연결되어 있거나 연결된 어댑터가 특정 인터페이스를 구현한다고 가정해서는 안 됩니다. 대신, 호출하기 전에 이를 확인해야 합니다.
컨트롤의 메서드와 같이 컨트롤에서 보호된 이벤트 메서드 재정의를 OnClick(EventArgs) 시뮬레이션할 LinkButton수 있습니다. 먼저 OnClick
메서드를 사용하여 어댑터 클래스를 만듭니다. 그런 다음 파생된 새 컨트롤을 LinkButton 만들고 메서드를 재정의합니다 OnClick(EventArgs) . 재정의된 OnClick(EventArgs) 메서드는 어댑터의 OnClick
메서드를 호출합니다. 어댑터 개체는 클래스의 Control 보호된 Adapter 속성을 통해 사용할 수 있습니다. 컨트롤의 속성은 Adapter null
연결된 어댑터가 없는 경우이므로 어댑터의 메서드를 호출하기 전에 코드에서 해당 조건을 확인해야 합니다.
생성자
ControlAdapter() |
ControlAdapter 클래스의 새 인스턴스를 초기화합니다. |
속성
Browser |
현재 HTTP 요청을 하는 클라이언트의 브라우저 기능에 대한 참조를 가져옵니다. |
Control |
이 컨트롤 어댑터가 결합된 컨트롤에 대한 참조를 가져옵니다. |
Page |
이 어댑터와 연결된 컨트롤이 있는 페이지에 대한 참조를 가져옵니다. |
PageAdapter |
연결된 컨트롤이 있는 페이지의 페이지 어댑터에 대한 참조를 가져옵니다. |
메서드
BeginRender(HtmlTextWriter) |
컨트롤의 렌더링 전에 호출됩니다. 파생 어댑터 클래스에서 특정 대상에는 필요하지만 HTML 브라우저에는 필요하지 않은 여는 태그를 생성합니다. |
CreateChildControls() |
합성 컨트롤의 대상별 자식 컨트롤을 만듭니다. |
EndRender(HtmlTextWriter) |
컨트롤의 렌더링 후에 호출됩니다. 파생 어댑터 클래스에서 특정 대상에는 필요하지만 HTML 브라우저에는 필요하지 않은 닫는 태그를 생성합니다. |
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
LoadAdapterControlState(Object) |
이 컨트롤 어댑터와 연결된 컨트롤이 있는 페이지에 대한 이전의 요청 중 SaveAdapterControlState()에서 저장한 어댑터 컨트롤 상태 정보를 로드합니다. |
LoadAdapterViewState(Object) |
이 컨트롤 어댑터와 연결된 컨트롤이 있는 페이지에 대한 이전 요청 중 SaveAdapterViewState()에서 저장한 어댑터 뷰 상태 정보를 로드합니다. |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
OnInit(EventArgs) |
연결된 컨트롤의 OnInit(EventArgs) 메서드를 재정의합니다. |
OnLoad(EventArgs) |
연결된 컨트롤의 OnLoad(EventArgs) 메서드를 재정의합니다. |
OnPreRender(EventArgs) |
연결된 컨트롤의 OnPreRender(EventArgs) 메서드를 재정의합니다. |
OnUnload(EventArgs) |
연결된 컨트롤의 OnUnload(EventArgs) 메서드를 재정의합니다. |
Render(HtmlTextWriter) |
컨트롤 어댑터가 연결된 컨트롤에 대한 대상별 태그를 생성합니다. |
RenderChildren(HtmlTextWriter) |
컨트롤 어댑터가 결합되는 합성 컨트롤의 자식 컨트롤에 대한 대상별 태그를 생성합니다. |
SaveAdapterControlState() |
컨트롤 어댑터의 컨트롤 상태 정보를 저장합니다. |
SaveAdapterViewState() |
컨트롤 어댑터의 뷰 상태 정보를 저장합니다. |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |