다음을 통해 공유


장치별 렌더링

업데이트: 2007년 11월

ASP.NET 모바일 웹 페이지는 자동으로 다양한 장치에 맞게 렌더링되지만 특정 장치나 특정 종류의 장치에만 사용할 콘텐츠를 지정할 수도 있습니다. 따라서 모바일 웹 페이지를 사용하면 장치의 특정 기능을 활용하도록 페이지를 사용자 지정할 수 있습니다. 예를 들어, 일반적인 방법 중 하나로 항목을 장치에 따라 다르게 렌더링해야 할 수 있습니다. ASP.NET에서는 다양한 종류의 장치에서 렌더링하기에 적절한 여러 가지 암시적 형식을 처리합니다. 그러나 필요한 경우 ASP.NET에서 각 장치에 각기 다른 문자열을 사용하여 레이블을 렌더링하도록 할 수 있습니다.

이러한 시나리오를 활용하려면 장치 기능 쿼리의 결과를 기준으로 컨트롤의 속성을 설정하는 코드를 응용 프로그램에 포함시켜야 합니다. 모바일 웹 페이지를 특정 종류의 장치에 맞게 사용자 지정하려면 페이지에 대한 장치 필터 집합을 정의한 다음 <DeviceSpecific><Choice> 구문을 사용하여 각 장치 종류에 해당하는 필터를 지정해야 합니다.

참고:

기본 Visual Studio 모바일 구성 파일에는 다양한 장치 필터가 미리 정의되어 있습니다. ASP.NET 2.0에서는 기본적으로 모바일 장치 필터를 자동으로 생성하지 않습니다. 그러나 웹 응용 프로그램을 이전 버전의 ASP.NET에서 ASP.NET 버전 2.0으로 마이그레이션할 경우에는 장치 필터가 Web.config 파일에 유지됩니다.

Filter 속성 사용

Filter 속성을 사용하면 장치 기능에 대해 장치 필터를 평가하거나 특정 필터를 설정할 수 있습니다.

필터 이름은 페이지 또는 관련 .ascx 파일에 있는 메서드 이름이거나 Web.config 파일의 <deviceFilters> 요소에 정의된 유효한 장치 필터 이름이어야 합니다. Filter 속성에 메서드 이름이 지정된 경우, 이 메서드는 다음 프로토타입과 일치해야 합니다.

public bool methodName(
    System.Web.Mobile.MobileCapabilities capabilities,
    String optionalArgument);

예를 들어, Filter 속성이 myChoiceMethod로 설정된 경우에는 다음과 같은 시그니처를 갖는 메서드가 있어야 합니다.

public bool myChoiceMethod(
    System.Web.Mobile.MobileCapabilities capabilities, 
    String optionalArgument
);

ASP.NET에서는 Choice 요소를 평가할 때 적절한 시그니처를 가진 메서드가 페이지 또는 사용자 정의 컨트롤에 있는지 확인합니다. 확인 결과 이러한 메서드가 없으면 Web.config 파일의 <deviceFilters> 요소를 검사합니다.

장치 필터를 사용하여 MobileCapabilities 클래스 확장

Web.config 파일에 사용자 고유의 장치 필터를 추가하면 MobileCapabilities 클래스를 확장할 수 있습니다. 장치 필터를 구성하면 두 가지 필터 형식, 즉 비교 기반 필터와 평가기 대리자 기반 필터에 사용할 수 있는 평가 메커니즘을 만들 수 있습니다.

비교 기반 필터

비교 기반 필터는 일반적으로 Boolean 인수를 기반으로 하는 기본 비교 작업을 수행합니다. 이 형식의 필터를 사용하려면 기능 이름 및 비교할 값을 제공해야 합니다. 런타임에 기능 값과 사용자가 지정한 값이 동일하면 평가기가 성공합니다. 비교되는 Boolean 속성은 대/소문자를 구분하지 않으므로 true와 True는 동일합니다. 그러나 비교되는 다른 속성은 모두 대/소문자를 구분합니다.

평가기 대리자 기반 필터

클래스 및 메서드 이름을 제공하여 평가기 대리자 기반 필터를 지정하면 더 복잡한 평가를 수행할 수 있습니다. 사용자가 제공한 메서드는 런타임에 호출되어 평가기를 테스트합니다. 평가기를 테스트하려면 고유한 메서드를 작성하고 컴파일하거나, 페이지 또는 사용자 정의 컨트롤에 메서드를 정의한 다음 앞에서 설명한 대로 이 메서드를 filter 특성에서 직접 참조해야 합니다.

Web.config 파일 구문

Web.config 파일에 장치 필터를 지정할 때는 <system.web> 섹션에 장치 필터를 추가합니다. 구문을 보려면 <deviceFilters>를 참조하십시오. 이 구문은 두 가지 형식의 필터에 모두 적용됩니다. 다음 예제에서 첫 번째 필터는 비교 기반 필터이고 두 번째 필터는 평가기 대리자 기반 필터입니다.

<system.web>
  <deviceFilters>
    <filter
      name="capability"
      compare="capabilityName"
      argument="argument" />
    <filter
      name="capability"
      type="className"
      method="methodName" />
  </deviceFilters>
</system.web>

MobileCapabilities 개체는 런타임에 이러한 필터를 평가합니다. 각 장치 필터는 장치의 기능을 기준으로 평가 조건을 지정합니다. 일반적으로, 장치 필터의 대상이 되는 장치 집합은 명확하게 구분되지 않습니다. 예를 들어, IsColor와 IsPDA 필터 특성 둘 다에 일치하는 장치가 여러 개 있을 수 있습니다.

참고:

장치 필터 이름은 대/소문자를 구분합니다.

<DeviceSpecific><Choice> 구문 안에는 이러한 필터의 값을 지정합니다. 예를 들어, 다음 코드에서는 Web.config 파일에 정의된 IsColor 필터 특성에 액세스합니다.

<DeviceSpecific>
    <Choice Filter="IsColor" ImageUrl="colorImg.gif" />
</DeviceSpecific>

Device-Specific/Choice 구문 사용

<DeviceSpecific><Choice> 구문은 페이지에 장치별 태그를 삽입하는 핵심 구문입니다. 컨트롤에 대한 장치별 태그를 추가하려면 <DeviceSpecific> 요소를 컨트롤의 자식으로 추가해야 합니다. 컨트롤에는 <DeviceSpecific> 요소가 하나만 포함될 수 있습니다.

<DeviceSpecific> 요소와 <Choice> 요소를 사용하면 요청 장치의 특징을 기준으로 ASP.NET에서 선택할 수 있는 값으로 구성된 집합을 지정할 수 있습니다. 선택 항목의 값은 문자열 형식입니다.

다음 예제에서와 같이 <DeviceSpecific> 요소는 여러 가지 선택 항목을 저장하는 데 사용되는 바깥쪽 컨테이너입니다.

<mobile:Image runat=server ImageURL="bw.gif">
  <DeviceSpecific>
    <Choice Filter="isColor" ImageURL="colorImg.gif"
      AlternateText="This device cannot display the image." />
    <Choice Filter="isWML11" ImageURL="myImage.wbmp" />
    <Choice ImageURL="monoImage.gif" />
  </DeviceSpecific>
</mobile:Image>

앞에서 설명했듯이, isColor와 같은 필터는 페이지 또는 사용자 정의 컨트롤에 메서드로 포함되거나 필터에 해당하는 항목이 Web.config 파일에 있어야 합니다.

Choice 요소 사용

선택 항목은 <DeviceSpecific> 요소 안에 포함되며 다양한 소스에서 가져온 장치 특징과 값 쌍을 나타냅니다. 선택 항목은 DeviceSpecific/Choice 구문에 표시되는 순서대로 평가됩니다.

컨트롤에는 <DeviceSpecific> 요소가 하나만 포함될 수 있지만 <DeviceSpecific> 요소에는 <Choice> 요소를 얼마든지 추가할 수 있습니다. 각 <Choice> 요소에는 다음 정보가 포함될 수 있습니다.

  • 평가할 장치 필터를 지정하는 필터 이름. 필터 이름이 생략된 경우에는 선택 항목이 기본적으로 선택됩니다.

  • 부모 컨트롤의 속성을 재정의하는 추가 속성

  • 컨트롤의 템플릿 정의

ASP.NET에서는 각 선택 항목을 순서대로 검토하고 필터 이름에 지정된 필터를 평가하여 사용할 <Choice> 요소를 선택합니다. 평가 결과가 true이면, 즉 필터가 현재 대상 장치와 일치하면 해당 항목이 선택됩니다. 항목이 선택되면 컨트롤은 선택 항목에 지정된 모든 속성 재정의를 적용한 다음 정의된 모든 템플릿을 렌더링에 사용할 수 있습니다.

참고 항목

기타 리소스

ASP.NET 모바일 웹 페이지 개발