Опубликован: 24.01.2007 | Доступ: свободный | Студентов: 1253 / 82 | Оценка: 4.37 / 4.17 | Длительность: 14:27:00
ISBN: 978-5-94774-627-3
Лекция 5:

Настроечные параметры мобильных элементов управления

< Лекция 4 || Лекция 5: 123 || Лекция 6 >

Работа с устройствами

Раздел <mobileControls> содержит подраздел <device>, в котором объявляется новый адаптер, используемый для мобильных элементов управления. Свойства раздела <device> приведены в табл. 5.3.

Таблица 5.3. Свойства <device>
Свойство Описание
name Определяет имя данного набора адаптера.
inheritsFrom Определяет набор адаптера, от которого наследуется этот адаптер. Этот адаптер должен быть объявлен либо ранее в этом же разделе <mobileControls>, либо в разделе <mobileControls> вышестоящего настроечного файла.
predicateClass Указывает класс, с помощью которого определяется, должен ли данный адаптер использоваться для текущего запрашивающего устройства. Значение свойства представляет полную ссылку на этот класс. Оно может наследоваться от класса, указанного в свойстве inheritsFrom.
predicateMethod Указывает метод .NET, с помощью которого определяется, должен ли данный адаптер использоваться для этого устройства. Этот метод должен быть расположен в классе, указанном в свойстве predicateClass. Значение свойства может наследоваться от класса, указанного в свойстве inheritsFrom.
pageAdapter Определяет класс .NET для адаптера страницы данного набора адаптера. Значение свойства представляет полную ссылку на этот класс. Класс адаптера страницы должен реализовать интерфейс IPageAdapter. Это значение может наследоваться от класса, указанного в свойстве inheritsFrom.

Каждый раздел <device> может содержать несколько подразделов <control>, каждый из которых задает соответствие между элементом управления и адаптером для обработки этого элемента. Каждый элемент управления, настраиваемый для данного устройства, должен иметь обрабатываемый его адаптер. В таблице 5.4 содержится перечень свойств раздела <control>.

Таблица 5.4. Свойства <control>
Свойство Описание
name Определяет имя мобильного элемента управления, для которого определяется адаптер.
adapter Определяет адаптер, который будет настраивать этот элемент управления для запрашивающего устройства.

Чтобы получить лучшее представление о том, как все работает, посмотрите на пример раздела <device>, взятого непосредственно из файла machine.config.

<device name="ChtmlDeviceAdapters" inheritsFrom="HtmlDeviceAdapters"
  predicateClass="System.Web.UI.MobileControls.Adapters.
    ChtmlPageAdapter" predicateMethod="DeviceQualifies"
  pageAdapter=
    "System.Web.UI.MobileControls.Adapters.ChtmlPageAdapter">
  <control name="System.Web.UI.MobileControls.Form" adapter=
    "System.Web.UI.MobileControls.Adapters.ChtmlFormAdapter" />
  <control name="System.Web.UI.MobileControls.Calendar" adapter=
    "System.Web.UI.MobileControls.Adapters.ChtmlCalendarAdapter"/>
  <control name="System.Web.UI.MobileControls.Image" adapter=
    "System.Web.UI.MobileControls.Adapters.ChtmlImageAdapter" />
  <! ---Extra control sections removed for brevity -->
</device>

В примере раздел <device> предназначен для адаптера ChtmlDeviceAdapters и показывает, как выглядит обычный раздел <device>.

Создание набора адаптера данных

Полная процедура создания собственного адаптера выходит за рамки этой книги, но в данном параграфе приведен краткий обзор и некоторые советы по созданию адаптеров. Наилучшим способом создания собственного адаптера является его разработка на основе свободно распространяемого исходного кода Microsoft. Хотя по умолчанию MMIT устанавливается вместе с ASP.NET 1.1, вам все же потребуется скачать и установить MMIT, чтобы получить исходный код адаптера устройства. MMIT находится на сайте http://mdsn.microsoft.com

После установки MMIT папка с исходным кодом адаптера помещается в директорию С:\Program Files\Microsoft Mobile Internet Toolkit. Это исходный код трех различных адаптеров по умолчанию, и он неоценим при создании собственного адаптера для устройства. Используйте данный код как основу для своего кода, а затем измените его в соответствии с требованиями своего устройства.

Сначала создайте адаптер страниц в качестве предикатного класса. Предикатный класс содержит предикатный метод, который определяет, должен ли использоваться ваш адаптер. Ниже приведен фрагмент файла HtmlPageAdapter из папки исходных кодов адаптеров.

C#

public static bool DeviceQualifies(HttpContext context)
{
  String type =((MobileCapabilities)context.Request.Browser).
    PreferredRenderingType;
  bool javascriptSupported = context.Request.Browser.JavaScript;
  bool qualifies =
    (type == MobileCapabilities.PreferredRenderingTypeHtml32) &&
    javascriptSupported;
  return qualifies;
}

VB.NET

Public Shared Function DeviceQualifies(ByVal context As _
  HttpContext) As Boolean
  Dim type As String = (CType(context.Request.Browser, _
    MobileCapabilities)).PreferredRenderingType
  Dim javascriptSupported As Boolean = _
    context.Request.Browser.JavaScript
  Dim qualifies As Boolean = (type = _
    MobileCapabilities.PreferredRenderingTypeHtml32) And _
  javascriptSupported
  Return qualifies
End Function

Данная функция возвращает значение типа Boolean, и среда выполнения для мобильных устройств определяет, должен ли этот адаптер обрабатывать запрос. Функция принимает текущий объект контекста HTTP и считывает, может ли это устройство обрабатывать HTML и JavaScript. Если устройство способно обрабатывать HTML и поддерживает JavaScript, то возвращается значение true, и запрос обрабатывается указанным адаптером. Страничный адаптер содержит несколько методов, которые отображают страницу, но здесь их описание не приводится.

После окончания работы над страничным адаптером, в том числе над предикатным методом, создайте адаптеры элементов управления для каждого элемента управления. Простейшим способом является взятие за основу кода, включенного в примеры кода MMIT. Создание собственного набора адаптера – это длинная процедура (ее описание здесь не приводится), но, изучив приведенную информацию и исходные коды, вы сможете создать набор адаптера для своего устройства.

Работа с разделом <deviceFilters>

Аналогично разделу <mobileControls>, раздел <deviceFilters> также используется для настройки содержимого, отсылаемого клиенту. В нем настраиваются фильтры, дающие во время выполнения значения true или false. Далее с их помощью принимается решение о том, какое содержимое должно отсылаться клиенту. Имеется два различных типа фильтров.

  • Фильтры сравнения. Используются для выполнения базового сравнения возможности и значения, указанного в фильтре. Можно использовать любую возможность, прочитанную из класса MobileCapabilities.
  • Фильтры делегатов оценки. Фильтры оценки создают собственный метод, который возвращает true или false. С помощью данного метода можно проверить возможности и выполнить другие проверки для определения того, должен ли этот фильтр возвращать true или false.

Оба типа фильтров реализуют в разделе <deviceFilters> элемент <filter>. Ниже приведен синтаксис <deviceFilters> для обоих типов.

<system.web>
  <deviceFilters>
    <filter name="filter name" compare="capability name"
      argument="value to match" />
    <filter name="filter name" type="class name"
      method="method name" />
  </deviceFilters>
</system.web>

Первый фильтр в приведенном фрагменте – фильтр сравнения, второй – фильтр оценки. Свойства элемента <filter> указаны в табл. 5.5.

Таблица 5.5. Свойства <filter>
Свойство Описание
name Определяет уникальное имя фильтра. Это имя используется для вызова фильтра в коде. Если вы укажете имя существующего фильтра, оно будет переопределено.
compare Определяет имя возможности, которую нужно проверить, – это любая из возможностей, включенных в класс mobileCapabilities или добавленная собственная возможность. Свойство используется при создании фильтров сравнения.
argument Определяет аргумент, используемый при сравнении с возможностью, указанной в свойстве compare. Свойство используется при создании фильтров сравнения.
type Определяет класс, предоставляющий оценочный метод. Значение свойства должно соответствовать стандартам .NET по полному указанию класса. Свойство используется при создании оценочных фильтров.
method Определяет метод, с помощью которого определяется значение, возвращаемое фильтром ( true или false ). Свойство используется при создании оценочных фильтров.
< Лекция 4 || Лекция 5: 123 || Лекция 6 >
Геннадий Щербаков
Геннадий Щербаков

В начале года получил код dreamspark  H4RQ9-QJ6FD-YJWJT-P6FVF-HGXQZ. При  его вводе- сообщение что он просрочен.