Lorsque vous écrivez un contrôle personnalisé, il est toujours rendu sous forme d'élément de couverture HTML. Comment puis-je le changer par exemple à un div? P>
3 Réponses :
Dérivez votre contrôle de WebControl comme suit:
public class MyCustomControl : WebControl { public MyCustomControl() : base(HtmlTextWriterTag.Div) {} }
J'ai normalement mon propre classe de base que tous mes contrôles composites héritent de. L'une des propriétés que j'ajoute est un conteneur. Exposé publiquement, le développeur peut choisir quel événement extérieur ils veulent. En interne, il définit la propriété Talkey qui régit ce rendu sur le contrôle de base. Tout ce qui suit à votre classe de contrôle / base.
Il vous suffit de définir HTMLContainerElement qui aura l'aide Inteli-Aide de tous les éléments de l'énumération HTMLTExtwritertag. P>
/// <summary> /// Local variable for storing what the container element for the rendered control will be. /// </summary> private HtmlTextWriterTag hosTagKey = HtmlTextWriterTag.Span; /// <summary> /// HTMLContanerElement is the tag key used to set the controls outer html control which appears in the markup. /// The default is a span, but you can change this to be any HTML control you choose. /// </summary> public HtmlTextWriterTag HTMLContainerElement { get { return this.hosTagKey; } set { this.hosTagKey = value; } } /// <summary> /// Makes it so this control is a "div" element instead of the /// standard "span" element. /// </summary> protected override HtmlTextWriterTag TagKey { get { return this.hosTagKey; } }
Si vous dérivez du compositecontrol, aucun constructeur qui prend un type d'étiquette. Vous pouvez remplacer Tamekey (je ne l'ai pas essayé), mais une option plus flexible consiste à remplacer la méthode RenderBeginTag et à le faire faire ce que vous voulez. La classe de base rend un élément d'ouverture «span», mais vous n'avez pas à appeler la méthode de la classe de base. Vous n'avez rien à appeler si vous ne voulez que rien de rendu (auquel cas a également remplacé RenderendTag et n'appelez rien de là). Par exemple,
<div class="reportViewer" id="QueryViewerWrapper">