장치 템플릿 지원
업데이트: 2007년 11월
장치 템플릿 지원은 DeviceSpecific/Choice 구문의 일부로 제공됩니다. 장치 템플릿을 제공하는 ASP.NET 모바일 컨트롤을 작성하는 작업은 템플릿 기반 ASP.NET 서버 컨트롤을 작성하는 작업과 매우 유사합니다. 그러나 모바일 컨트롤에 대해서는 다음과 같은 고유한 특징이 적용됩니다.
장치 템플릿을 지원하는 모든 모바일 컨트롤은 ITemplateable 인터페이스를 구현합니다. 이 인터페이스는 메서드가 없는 마커 인터페이스입니다.
장치 템플릿을 지원하는 컨트롤은 장치 템플릿이 정의 또는 지정되지 않은 장치에서도 문제 없이 렌더링될 수 있도록 기본 방식으로 렌더링되어야 합니다.
컨트롤 개발자는 렌더링 중에 장치 템플릿을 처리하는 방법을 결정해야 합니다. 그 중 하나로, 장치 템플릿이 정의되거나 선택된 경우 전용 템플릿 모드로 전환하는 방법이 있습니다. 이렇게 하면 컨트롤은 제공된 템플릿을 사용하여 모든 렌더링 작업을 수행합니다. 이러한 컨트롤에는 List 컨트롤이 있습니다. 컨트롤은 템플릿을 단순히 추가 프로세스로 사용할 수도 있습니다. 예를 들어, 특정 템플릿을 정의하거나 선택한 경우 이 템플릿을 기본 렌더링 작업에 추가하거나 작업의 일부를 바꾸는 데 사용할 수 있습니다. 이러한 동작을 수행하는 컨트롤에는 Form 컨트롤이 있습니다.
모바일 컨트롤은 ITemplate 속성을 노출하는 대신, 정의된 템플릿 컬렉션에 액세스할 수 있습니다. MobileControl 기본 클래스에는 컨트롤이 장치 템플릿을 사용하는 데 도움이 되는 두 개의 멤버가 있습니다.
다음 코드 예제에서와 같이 IsTemplated 속성은 컨트롤에 템플릿이 정의되었거나 선택되었는지를 나타냅니다.
if (mobileControl.IsTemplated) { return true; }
GetTemplate 메서드는 지정된 이름을 갖는 장치 템플릿을 반환하거나, 템플릿이 정의되어 있지 않은 경우에는 null을 반환합니다. 다음 예제에서는 장치 템플릿을 검색하여 null 상태인지 테스트하는 방법을 보여 줍니다.
public override void CreateDefaultTemplatedUI(bool doDataBind) { ITemplate headerTemplate = GetTemplate(Constants.HeaderTemplateTag); ITemplate footerTemplate = GetTemplate(Constants.FooterTemplateTag); ITemplate scriptTemplate = GetTemplate(Constants.ScriptTemplateTag); if (headerTemplate != null) { _headerContainer = new TemplateContainer(); headerTemplate.InstantiateIn(_headerContainer); _headerContainer.EnablePagination = false; Controls.AddAt(0, _headerContainer); } if (footerTemplate != null) { _footerContainer = new TemplateContainer(); footerTemplate.InstantiateIn(_footerContainer); _footerContainer.EnablePagination = false; Controls.Add(_footerContainer); } if (scriptTemplate != null) { _scriptContainer = new TemplateContainer(); scriptTemplate.InstantiateIn(_scriptContainer); _scriptContainer.EnablePagination = false; } }
다음 표에서는 Form 컨트롤을 통해 사용할 수 있는 템플릿을 설명합니다. Form 컨트롤에는 장치별 템플릿 집합 및 장치에 독립적인 템플릿 집합을 모두 사용할 수 있습니다.
템플릿 |
설명 |
---|---|
머리글 템플릿 |
머리글 템플릿은 폼의 맨 위쪽에 렌더링됩니다. 폼이 여러 화면으로 페이지가 매겨진 경우에는 각 화면에 머리글이 포함됩니다. 머리글 템플릿은 장치에 독립적인 템플릿 집합의 일부가 될 수 있습니다. 이런 경우, 머리글 템플릿에는 모바일 컨트롤이 포함됩니다. |
바닥글 템플릿 |
바닥글 템플릿은 폼의 아래쪽에 렌더링됩니다. 폼이 여러 화면으로 페이지가 매겨진 경우에는 각 화면에 바닥글이 포함됩니다. 바닥글 템플릿은 장치에 독립적인 템플릿 집합의 일부가 될 수 있습니다. 이런 경우, 바닥글 템플릿에는 모바일 컨트롤이 포함됩니다. |
스크립트 템플릿 |
스크립트 템플릿은 폼의 맨 위쪽에 렌더링됩니다. 폼이 여러 화면으로 페이지가 매겨진 경우에는 각 화면에 스크립트 템플릿이 포함됩니다. 스크립트 템플릿의 코드는 HTML 장치에서는 여는 <head> 태그 바로 다음에 추가되고 WML 장치에서는 여는 <card> 태그 바로 다음에 추가됩니다. |
이러한 템플릿을 프로그래밍 방식으로 사용할 수도 있습니다. 자세한 내용은 Footer 속성, Header 속성 및 Script 속성을 참조하십시오.