ControlAdapter Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Personnalise le rendu du contrôle dérivé auquel l’adaptateur est attaché, pour modifier le balisage ou le comportement par défaut pour des navigateurs spécifiques, et est la classe de base à partir de laquelle tous les adaptateurs de contrôle héritent.
public ref class ControlAdapter abstract
public abstract class ControlAdapter
type ControlAdapter = class
Public MustInherit Class ControlAdapter
- Héritage
-
ControlAdapter
- Dérivé
Remarques
Les adaptateurs de contrôle sont des composants qui remplacent certaines Control méthodes et événements de classe dans son cycle de vie d’exécution pour permettre la gestion spécifique au navigateur ou au balisage. .NET Framework mappe un seul adaptateur de contrôle dérivé à un Control objet pour chaque requête cliente.
Un adaptateur modifie un contrôle pour un navigateur ou une classe spécifique de navigateurs ou agit comme un filtre arbitraire sur une fonctionnalité. En règle générale, l’adaptateur est défini par le langage de balisage utilisé par le navigateur (par exemple, XHTML ou HTML 3.2). Une grande partie de l’adaptabilité dans le comportement de rendu peut être encapsulée dans les classes spécialisées qui dérivent de la HtmlTextWriter classe. Par conséquent, il est probable qu’un seul adaptateur puisse être utilisé pour un certain nombre de comportements de classe de navigateur ou que l’inclusion de l’adaptabilité dans les HtmlTextWriter classes pourrait utiliser un adaptateur de contrôle inutile.
Un adaptateur pour une classe de contrôle s’applique à tous les contrôles qui héritent de cette classe, sauf si des adaptateurs plus spécialisés sont présents. Par exemple, un adaptateur pour la BaseValidator classe peut être utilisé pour tous les Validator objets.
Les adaptateurs n’héritent généralement pas directement de la ControlAdapter classe, mais de l’une des classes de base d’adaptateurs spécifiques à la cible qui fournissent des fonctionnalités supplémentaires spécifiques au type de contrôle et au navigateur cible ou au rendu particulier requis.
Les contrôles eux-mêmes ne nécessitent pas nécessairement d’adaptateur. Si les contrôles sont étendus par composition, les adaptateurs de contrôle enfants sont généralement suffisants.
Chaque contrôle a des mappages explicites aux adaptateurs via les fichiers de définition .browser. Ainsi, tout accès à la Control.Adapter propriété utilise l’objet HttpBrowserCapabilities extrait des fichiers de définition du navigateur pour effectuer la recherche du mappage de l’adaptateur à contrôler.
Pendant le traitement, .NET Framework intercepte les appels aux méthodes substituables d’un contrôle pouvant être spécifique à la cible. Si un adaptateur de contrôle est attaché, .NET Framework appelle les méthodes d’adaptateur associées.
L’adaptateur effectue le rendu du contrôle via la Render méthode. En cas de substitution, Render il est possible de ne pas appeler l’implémentation de la classe de base, car elle effectue un rappel sur la Control.Render méthode. Cela peut entraîner le rendu deux fois, une fois par l’adaptateur et une fois par le contrôle.
La Render méthode de base revient sur la Control.Render méthode du contrôle. Par conséquent, si vous remplacez Render, vous ne devez pas appeler l’implémentation de classe de base, sauf si le rendu que vous implémentez est en plus de celui fourni par Control.Render le contrôle.
Vous devez vous assurer que .NET Framework effectue une interception pour les adaptateurs des contrôles enfants. Pour ce faire, appelez la RenderChildren méthode de base, qui appelle la Control.RenderChildren méthode du contrôle, à partir de votre Render remplacement.
Les BeginRender méthodes et EndRender les méthodes sont appelées par le contrôle immédiatement avant et après (respectivement) que le contrôle appelle la Render méthode. Si les tâches de traitement préalables et postérieures au rendu sont les seules tâches de traitement spécifiques au navigateur requises, l’utilisation BeginRender et EndRender peut rendre inutile de remplacer Render. Le comportement par défaut des méthodes et EndRender des BeginRender méthodes consiste à appeler les méthodes correspondantes du HtmlTextWriter.
Pour conserver ses propres informations d’état, un adaptateur de contrôle peut remplacer les méthodes et SaveAdapterViewStateLoadAdapterViewState les SaveAdapterControlStateméthodesLoadAdapterControlState. SaveAdapterControlState, , SaveAdapterViewStateLoadAdapterControlStateet LoadAdapterViewState sont appelés lorsque le contrôle privé et les états d’affichage sont enregistrés et chargés, respectivement.
Les OnInitméthodes de base , et les OnPreRenderOnUnload méthodes de OnLoadbase rappellent les méthodes de classe correspondantesControl. Par conséquent, l’une de ces ControlAdapter méthodes substituées doit appeler leurs méthodes de base ; sinon, l’événement associé à la Control méthode de classe ne sera pas déclenché.
Les contrôles et les adaptateurs implémentent éventuellement les interfaces et IPostBackEventHandler les IPostBackDataHandler contrôles. Le .NET Framework détermine si un adaptateur existe et si l’adaptateur implémente ces interfaces. Si c’est le cas, l’adaptateur doit remplacer le LoadPostData, RaisePostDataChangedEventet RaisePostBackEvent les méthodes, si nécessaire. Si les données de publication ne sont pas reconnues dans l’adaptateur, elles doivent rappeler le contrôle pour le traiter. Les gestionnaires d’événements suivants doivent également rappeler le contrôle.
Notes pour les responsables de l’implémentation
Lorsque vous héritez de la ControlAdapter classe, un contrôle qui nécessite une fonctionnalité d’adaptateur générale doit avoir une classe de base d’adaptateur correspondante, nommée dans le modèle ControlTypeAdapter (par exemple, TextBoxAdapter). L’adaptateur doit au minimum retourner une instance fortement typée du contrôle par le biais de sa Control propriété.
- Les adaptateurs de contrôle pour un type de contrôle et un langage de balisage donnés doivent être nommés dans le modèle
MarkupControlTypeAdapter(par exemple).XhtmlTextBoxAdapterLes adaptateurs d’un contrôle doivent être implémentés dans unAdapterssous-espace de noms.
Les adaptateurs de contrôle doivent hériter de la classe de base appropriée et suivre le même modèle d’héritage que le contrôle. Par exemple, un adaptateur pour un contrôle qui hérite de la Control classe de base doit hériter de la ControlAdapter classe ou de la classe appropriée ControlTypeAdapter .
Tous les adaptateurs spécialisés doivent être définis pour le contrôle spécialisé sous tous les nœuds d’appareil dans les fichiers .browser de configuration.
Un contrôle correctement implémenté ne doit pas supposer qu’un adaptateur est attaché ou que l’adaptateur attaché implémente une interface spécifique. Au lieu de cela, il doit vérifier ces éléments avant d’appeler.
Il est possible de simuler la substitution de méthodes d’événement protégées dans le contrôle, telles que la OnClick(EventArgs) méthode du LinkButton. Tout d’abord, créez une classe d’adaptateur avec une OnClick méthode. Créez ensuite un contrôle dérivé de LinkButton la méthode et remplacez la OnClick(EventArgs) méthode. La méthode substituée OnClick(EventArgs) appelle la OnClick méthode de l’adaptateur. L’objet adaptateur est disponible via la propriété protégée Adapter de la Control classe. La Adapter propriété du contrôle est null lorsqu’il n’existe aucun adaptateur associé. Par conséquent, tout code doit vérifier cette condition avant d’appeler les méthodes de l’adaptateur.
Constructeurs
| Nom | Description |
|---|---|
| ControlAdapter() |
Initialise une nouvelle instance de la classe ControlAdapter. |
Propriétés
| Nom | Description |
|---|---|
| Browser |
Obtient une référence aux fonctionnalités du navigateur du client qui effectuent la requête HTTP actuelle. |
| Control |
Obtient une référence au contrôle auquel cet adaptateur de contrôle est attaché. |
| Page |
Obtient une référence à la page où réside le contrôle associé à cet adaptateur. |
| PageAdapter |
Obtient une référence à l’adaptateur de page de la page où réside le contrôle associé. |
Méthodes
| Nom | Description |
|---|---|
| BeginRender(HtmlTextWriter) |
Appelé avant le rendu d’un contrôle. Dans une classe d’adaptateur dérivée, génère des balises ouvrantes requises par une cible spécifique, mais qui ne sont pas nécessaires par les navigateurs HTML. |
| CreateChildControls() |
Crée les contrôles enfants spécifiques à la cible pour un contrôle composite. |
| EndRender(HtmlTextWriter) |
Appelé après le rendu d’un contrôle. Dans une classe d’adaptateur dérivée, génère des balises fermante requises par une cible spécifique, mais qui ne sont pas nécessaires par les navigateurs HTML. |
| Equals(Object) |
Détermine si l’objet spécifié est égal à l’objet actuel. (Hérité de Object) |
| GetHashCode() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| LoadAdapterControlState(Object) |
Charge les informations d’état du contrôle de l’adaptateur enregistrées SaveAdapterControlState() lors d’une demande précédente sur la page où réside le contrôle associé à cet adaptateur de contrôle. |
| LoadAdapterViewState(Object) |
Charge les informations d’état d’affichage de l’adaptateur enregistrées SaveAdapterViewState() lors d’une demande précédente sur la page où réside le contrôle associé à cet adaptateur de contrôle. |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| OnInit(EventArgs) |
Remplace la OnInit(EventArgs) méthode du contrôle associé. |
| OnLoad(EventArgs) |
Remplace la OnLoad(EventArgs) méthode du contrôle associé. |
| OnPreRender(EventArgs) |
Remplace la OnPreRender(EventArgs) méthode du contrôle associé. |
| OnUnload(EventArgs) |
Remplace la OnUnload(EventArgs) méthode du contrôle associé. |
| Render(HtmlTextWriter) |
Génère le balisage spécifique à la cible pour le contrôle auquel l’adaptateur de contrôle est attaché. |
| RenderChildren(HtmlTextWriter) |
Génère le balisage spécifique à la cible pour les contrôles enfants dans un contrôle composite auquel l’adaptateur de contrôle est attaché. |
| SaveAdapterControlState() |
Enregistre les informations d’état du contrôle pour l’adaptateur de contrôle. |
| SaveAdapterViewState() |
Enregistre les informations d’état d’affichage de l’adaptateur de contrôle. |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |