В начале года получил код dreamspark H4RQ9-QJ6FD-YJWJT-P6FVF-HGXQZ. При его вводе- сообщение что он просрочен.
|
Настроечные параметры мобильных элементов управления
Работа с устройствами
Раздел <mobileControls> содержит подраздел <device>, в котором объявляется новый адаптер, используемый для мобильных элементов управления. Свойства раздела <device> приведены в табл. 5.3.
Свойство | Описание |
---|---|
name | Определяет имя данного набора адаптера. |
inheritsFrom | Определяет набор адаптера, от которого наследуется этот адаптер. Этот адаптер должен быть объявлен либо ранее в этом же разделе <mobileControls>, либо в разделе <mobileControls> вышестоящего настроечного файла. |
predicateClass | Указывает класс, с помощью которого определяется, должен ли данный адаптер использоваться для текущего запрашивающего устройства. Значение свойства представляет полную ссылку на этот класс. Оно может наследоваться от класса, указанного в свойстве inheritsFrom. |
predicateMethod | Указывает метод .NET, с помощью которого определяется, должен ли данный адаптер использоваться для этого устройства. Этот метод должен быть расположен в классе, указанном в свойстве predicateClass. Значение свойства может наследоваться от класса, указанного в свойстве inheritsFrom. |
pageAdapter | Определяет класс .NET для адаптера страницы данного набора адаптера. Значение свойства представляет полную ссылку на этот класс. Класс адаптера страницы должен реализовать интерфейс IPageAdapter. Это значение может наследоваться от класса, указанного в свойстве inheritsFrom. |
Каждый раздел <device> может содержать несколько подразделов <control>, каждый из которых задает соответствие между элементом управления и адаптером для обработки этого элемента. Каждый элемент управления, настраиваемый для данного устройства, должен иметь обрабатываемый его адаптер. В таблице 5.4 содержится перечень свойств раздела <control>.
Чтобы получить лучшее представление о том, как все работает, посмотрите на пример раздела <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.