ControlAdapter Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Dostosowuje renderowanie dla pochodnej kontrolki, do której jest dołączona karta, w celu zmodyfikowania domyślnego znaczników lub zachowania dla określonych przeglądarek i jest klasą bazową, z której dziedziczą wszystkie karty sterujące.
public ref class ControlAdapter abstract
public abstract class ControlAdapter
type ControlAdapter = class
Public MustInherit Class ControlAdapter
- Dziedziczenie
-
ControlAdapter
- Pochodne
Uwagi
Karty sterujące to składniki, które zastępują niektóre Control metody i zdarzenia klasy w cyklu życia wykonywania, aby umożliwić obsługę specyficzną dla przeglądarki lub znaczników. .NET Framework mapuje pojedynczą pochodną kartę Control sterowania na obiekt dla każdego żądania klienta.
Karta modyfikuje kontrolkę dla określonej przeglądarki lub klasy przeglądarek lub działa jako dowolny filtr w niektórych możliwościach. Zazwyczaj adapter jest definiowany przez język znaczników używany przez przeglądarkę (na przykład XHTML lub HTML 3.2). Wiele możliwości adaptacji w zachowaniu renderowania można hermetyzować w wyspecjalizowanych klasach, które pochodzą z HtmlTextWriter klasy. W związku z tym istnieje prawdopodobieństwo, że jedna karta może być używana do wielu zachowań klasy przeglądarki lub włączenia możliwości dostosowania w HtmlTextWriter klasach może sprawić, że użycie adaptera sterującego jest niepotrzebne.
Karta dla klasy kontrolnej ma zastosowanie do wszystkich kontrolek dziedziczynych z tej klasy, chyba że istnieją bardziej wyspecjalizowane karty. Na przykład adapter klasy BaseValidator może być używany dla wszystkich Validator
obiektów.
Karty zazwyczaj nie dziedziczą bezpośrednio z ControlAdapter klasy, ale z jednej z klas bazowych specyficznych dla elementu docelowego, które zapewniają dodatkowe funkcje specyficzne dla typu kontrolki i przeglądarki docelowej lub określonego wymaganego renderowania.
Same kontrolki nie muszą wymagać adaptera. Jeśli kontrolki są rozszerzone przez kompozycję, zazwyczaj karty kontroli podrzędnej są wystarczające.
Każda kontrolka ma jawne mapowania kart za pośrednictwem plików definicji przeglądarki. W związku z tym każdy dostęp do Control.Adapter właściwości używa HttpBrowserCapabilities obiektu wyodrębnionego z plików definicji przeglądarki, aby wykonać wyszukiwanie mapowania karty do sterowania.
Podczas przetwarzania .NET Framework przechwytuje wywołania do zastępowalnych metod kontrolki, które mogą być specyficzne dla elementu docelowego. Jeśli karta kontrolna jest dołączona, .NET Framework wywołuje skojarzone metody adaptera.
Karta wykonuje renderowanie kontrolki za pomocą Render metody . Jeśli przesłonięć, potencjalnie nie należy wywoływać implementacji klasy bazowej, Render ponieważ wykonuje wywołanie z powrotem w metodzie Control.Render . Może to spowodować dwukrotne wystąpienie renderowania przez kartę i raz przez kontrolkę.
Metoda podstawowa Render wywołuje z powrotem metodę Control.Render kontrolki. W związku z tym, jeśli zastąpisz Render, nie należy wywołać implementacji klasy bazowej, chyba że implementowane renderowanie jest dodatkiem dostarczonym przez Control.Render kontrolkę.
Należy się upewnić, że .NET Framework wykonuje przechwytywanie kart kontrolek podrzędnych. Można to zrobić, wywołując metodę podstawową RenderChildren , która wywołuje Control.RenderChildren metodę kontrolki z przesłonięcia Render .
Metody BeginRender i EndRender są wywoływane przez kontrolkę bezpośrednio przed i po (odpowiednio) kontrolki wywołuje metodę Render . Jeśli wstępnie i po renderowaniu są jedynymi wymaganymi zadaniami przetwarzania specyficznymi dla przeglądarki, użycie BeginRender i EndRender może spowodować Render, że zastąpienie elementu jest niepotrzebne. Domyślne zachowanie BeginRender metod i EndRender polega na wywołaniu odpowiednich metod klasy HtmlTextWriter.
Aby zachować własne informacje o stanie, karta kontrolna może zastąpić SaveAdapterControlStatemetody , LoadAdapterControlState, SaveAdapterViewStatei LoadAdapterViewState . SaveAdapterControlState, SaveAdapterViewState, LoadAdapterControlStatei LoadAdapterViewState są wywoływane, gdy prywatna kontrolka i stany widoku są zapisywane i ładowane odpowiednio.
Metody OnInit, OnLoad, OnPreRenderi OnUnload base wywołają z powrotem odpowiednie Control metody klasy. W związku z tym każda z tych ControlAdapter metod, które są zastępowane, musi wywoływać metody podstawowe. W przeciwnym razie zdarzenie skojarzone z Control metodą klasy nie zostanie podniesione.
Kontrolki i karty opcjonalnie implementują IPostBackDataHandler interfejsy i IPostBackEventHandler . .NET Framework określa, czy karta istnieje i czy karta implementuje te interfejsy. Jeśli tak, karta powinna zastąpić LoadPostDatametody , RaisePostDataChangedEventi RaisePostBackEvent zgodnie z potrzebami. Jeśli dane po powrocie zwrotne nie są rozpoznawane w adapterze, należy wywołać ponownie kontrolkę, aby ją przetworzyć. Kolejne programy obsługi zdarzeń również muszą wywołać kopię zapasową kontrolki.
Uwagi dotyczące implementowania
Gdy dziedziczysz z ControlAdapter klasy, kontrolka, która wymaga ogólnej funkcjonalności karty, powinna mieć odpowiednią klasę bazową adaptera o nazwie w wzorcu ControlType
Adapter
(na przykład TextBoxAdapter
). Karta powinna co najmniej zwrócić silnie typizowane wystąpienie kontrolki za pośrednictwem jej Control właściwości.
- Karty sterujące dla danego typu kontrolki i języka znaczników powinny być nazwane we wzorcu
MarkupControlType
Adapter
(na przykładXhtmlTextBoxAdapter
). Karty dla kontrolki powinny być implementowane wAdapters
przestrzeni nazw podrzędnych.
Karty sterujące powinny dziedziczyć z odpowiedniej klasy bazowej i postępować zgodnie z tym samym modelem dziedziczenia co kontrolka. Na przykład adapter kontrolki dziedziczonej Control z klasy bazowej powinien dziedziczyć z ControlAdapter klasy lub odpowiedniej ControlType
Adapter
klasy.
Wszystkie wyspecjalizowane karty powinny być zdefiniowane dla wyspecjalizowanej kontroli we wszystkich węzłach urządzenia w plikach konfiguracji .browser.
Prawidłowo zaimplementowana kontrolka nie powinna zakładać, że karta jest dołączona lub czy dołączona karta implementuje określony interfejs. Zamiast tego należy sprawdzić te elementy przed wywołaniem.
Istnieje możliwość symulowania zastępowania chronionych metod zdarzeń w kontrolce, takich jak OnClick(EventArgs) metoda LinkButton. Najpierw utwórz klasę adaptera za pomocą metody OnClick
. Następnie utwórz nową kontrolkę pochodną LinkButton i przesłoń metodę OnClick(EventArgs) . Metoda przesłonięć OnClick(EventArgs) wywołuje metodę OnClick
adaptera. Obiekt adaptera jest dostępny za pośrednictwem chronionej Adapter Control właściwości klasy. Właściwość Adapter kontrolki jest null
wtedy, gdy nie ma skojarzonej karty, więc każdy kod powinien sprawdzić ten warunek przed wywołaniem metod karty.
Konstruktory
ControlAdapter() |
Inicjuje nowe wystąpienie klasy ControlAdapter. |
Właściwości
Browser |
Pobiera odwołanie do możliwości przeglądarki klienta wysyłającego bieżące żądanie HTTP. |
Control |
Pobiera odwołanie do kontrolki, do której jest podłączona ta karta sterowania. |
Page |
Pobiera odwołanie do strony, na której znajduje się kontrolka skojarzona z tą kartą. |
PageAdapter |
Pobiera odwołanie do karty strony dla strony, na której znajduje się skojarzona kontrolka. |
Metody
BeginRender(HtmlTextWriter) |
Wywoływane przed renderowaniem kontrolki. W klasie karty pochodnej generuje tagi otwierające, które są wymagane przez określony element docelowy, ale nie jest wymagany przez przeglądarki HTML. |
CreateChildControls() |
Tworzy kontrolki podrzędne specyficzne dla elementu docelowego dla kontrolki złożonej. |
EndRender(HtmlTextWriter) |
Wywoływana po renderowaniu kontrolki. W klasie pochodnej karty generuje tagi zamykające, które są wymagane przez określony element docelowy, ale nie jest wymagany przez przeglądarki HTML. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
LoadAdapterControlState(Object) |
Ładuje informacje o stanie kontrolki karty, które zostały zapisane SaveAdapterControlState() podczas poprzedniego żądania na stronie, na której znajduje się kontrolka skojarzona z tą kartą sterowania. |
LoadAdapterViewState(Object) |
Ładuje informacje o stanie widoku karty, które zostały zapisane SaveAdapterViewState() podczas poprzedniego żądania na stronie, na której znajduje się kontrolka skojarzona z tą kartą sterowania. |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
OnInit(EventArgs) |
Zastępuje metodę OnInit(EventArgs) skojarzonej kontrolki. |
OnLoad(EventArgs) |
Zastępuje metodę OnLoad(EventArgs) skojarzonej kontrolki. |
OnPreRender(EventArgs) |
Zastępuje metodę OnPreRender(EventArgs) skojarzonej kontrolki. |
OnUnload(EventArgs) |
Zastępuje metodę OnUnload(EventArgs) skojarzonej kontrolki. |
Render(HtmlTextWriter) |
Generuje znaczniki specyficzne dla elementu docelowego dla kontrolki, do której jest dołączona karta sterowa. |
RenderChildren(HtmlTextWriter) |
Generuje znaczniki specyficzne dla elementu docelowego dla kontrolek podrzędnych w kontrolce złożonej, do której jest dołączony adapter sterujący. |
SaveAdapterControlState() |
Zapisuje informacje o stanie sterowania dla karty sterującej. |
SaveAdapterViewState() |
Zapisuje informacje o stanie widoku dla karty sterującej. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |