Расширение функциональных возможностей с помощью наследования
Обновлен: Ноябрь 2007
В дополнение к созданию пользовательских элементов управления разработчик может использовать наследование для расширения функциональности веб-страниц ASP.NET для мобильных устройств. Если создается класс, наследуемый от существующего класса элемента управления ASP.NET для мобильных устройств, то функциональность можно добавить путем переопределения существующих членов или создания для класса новых свойств, методов и событий.
Создание класса с помощью наследования
Следующий пример кода показывает новый класс с именем CarList, наследуемый от мобильного элемента управления List и предназначенный для отрисовки информации об автомобилях. Класс CarList инкапсулирует информацию, требуемую для привязки к списку объектов Car.
using System.Web.UI.MobileControls;
namespace myCompany.MobileControls
{
class CarList : List
{
// Override OnInit, and set the DataValueField property
// to the correct property of a Car object to use as the
// value of each list item.
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
this.DataValueField = "id";
}
// Override OnItemDataBind, and set the list item display
// text to a rich expression, containing the year, make,
// and model of the car.
protected override void OnItemDataBind(ListDataBindEventArgs e)
{
base.OnItemDataBind(e);
CarInfo car = (Car)e.DataItem;
e.ListItem.Text =
String.Format("{0}{1}{2}", car.Year, car.Make, car.Model);
}
}
}
Более подробный пример расширения функциональности элемента управления с помощью наследования см. в учебнике "Примеры использования ASP.NET для мобильных устройств".
Развертывание нового класса
Чтобы воспользоваться этим классом примера, следует скомпилировать класс в сборку, а затем поместить его в папку приложения Bin. В следующем примере продемонстрировано, как зарегистрировать сборку под названием MyCompany.CarList.dll. Сборку можно зарегистрировать на странице с помощью директивы @ Register, указав настраиваемый тег.
<%-- Register the myCompany.MobileControls namespace. --%>
<%@ Register TagPrefix="car" Namespace="myCompany.MobileControls"
Assembly="myCompany.CarList" %>
// More code.
<%-- Control declaration --%>
<car:CarList id="myCarList" runat="server" />
Если наследуемый элемент управления не изменяет функциональности отрисовки родительского класса, то создание адаптера для данного класса не требуется. Так как элемент управления CarList также является объектом List, то автоматически используется адаптер, присвоенный в предыдущем примере элементу управления List текущего обозревателя, например HtmlListAdapter. В то же время, чтобы предоставить особую отрисовку элемента управления CarList для конкретного устройства, можно создать адаптер и зарегистрировать сопоставление в файле Web.config.
См. также
Другие ресурсы
Добавление новых адаптеров устройств и поддержка устройств
Создание пользовательских элементов управления для мобильных устройств