2009-03-19 6 views

Répondre

1

Je n'ai pas travaillé directement avec les adaptateurs, mais à la lecture de la documentation, il semble que vous puissiez sous-classer le contrôle de l'assistant dans votre propre version - par exemple "AdaptedWizard". Vous n'auriez pas besoin de faire des substitutions au code de base, à moins que cela ne vous aide à résoudre un autre problème. À partir de là, il semble que vous pouvez modifier le fichier .browser pour référencer votre classe AdaptedWizard au lieu de la classe Wizard par défaut. Ensuite, tous les nouveaux Assistants de votre site seront classés à partir de AdaptedWizard au lieu de Wizard.

Bonne chance!

Nate

+0

Oui, cela fonctionne un régal - je l'ai fait pour quelques articles comme ça. –

0

Si vous avez accès au code source, vous pouvez modifier l'adaptateur de contrôle pour vérifier qu'un premier attribut personnalisé existe et a la valeur correcte avant d'adapter la sortie du contrôle. Vous devez supprimer l'attribut personnalisé avant de rendre le rendu, sinon il sera rendu en html.

Je l'ai utilisé sur de nombreux adaptateurs de contrôle et cela fonctionne bien et vous donne une indication en ligne sur ce que les contrôles sont adaptés. Cela supprime également le besoin de créer des classes étendues.

Le code ci-dessous est la façon dont je détermine si le contrôle doit être adapté.

public class TestAdapter : WebControlAdapter 
{ 
    bool _adapt = false; 

    protected override void OnInit(EventArgs e) 
    { 
     Check(); 
     base.OnInit(e); 
    } 


    void Check() 
    { 
     // search for custom attribute 
     const string att = "adapt"; 
     string value = this.Control.Attributes[att]; 

     if (string.IsNullOrEmpty(value)) 
     { 
      return; 
     } 

     if (!bool.TryParse(value, out _adapt)) 
     { 
      throw new InvalidOperationException("adapt attribute has invalid value : " + value); 
     } 

     this.Control.Attributes.Remove(att); 
    } 
} 
Questions connexes