Rendu fermeture automatique Tag dans le contrôle ASP.NET personnalisé dérivé de contrôle

voix
4

Je travaille sur une bibliothèque contrôle FBML Facebook et souhaite créer mon FBML un peu modelée comme Contrôles de la bibliothèque WebControls ASP.NET. J'ai une classe de base qui gère le rendu par défaut; voici ma méthode render:


        protected override void Render(HtmlTextWriter writer)
        {
            AddAttributesToRender(writer);

            if (UseXfbmlSemantics)
            {
                writer.RenderBeginTag(ElementName);
                writer.EndRender();
                writer.RenderEndTag();
            }
            else
            {
                writer.RenderBeginTag(ElementName);
                writer.RenderEndTag();
            }
        }

Ce que je voudrais pour le rendu est à modifier en fonction de UseXfbmlSemantics - s'il est vrai, il doit rendre, par exemple:

<fb:name uid=10300399458></fb:name>

Quand il est faux, il devrait rendre avec une étiquette de fermeture automatique:

<fb:name uid=10300399458 />

Je peux obtenir la « vraie » condition de travailler presque correctement, mais la balise de fermeture auto-semble être incompatible avec l'ensemble des méthodes Render-. Malheureusement, si tel est le cas, cela signifie aussi que le modèle de AddAttributesToRender ne fonctionnerait pas non plus. Ce qu'il est en fait la production est la suivante:


        <fb:name uid=10300399458>

        </fb:name>

Comment puis-je obtenir HtmlTextWriter (ou qui HtmlTextWriter dois-je utiliser) pour faire rendre une balise de fermeture auto-? Ou, à tout le moins, comment puis-je faire pas rendre cet espace intermédiaire (de sorte que les balises d'ouverture et de fermeture sont immédiatement à côté de l'autre)?

Créé 05/11/2008 à 23:32
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
6

Cela vous allez devrait obtenir - il rendra aussi <fb:name uid="00101010101"/>. Vous pouvez également remplacer les RenderBeginTag, RenderContents, RenderEndTag. En fonction de ce que vous faites il peut y avoir d'autres choses qui se passent dans RenderControl que vous avez besoin. Vous pouvez également regarder dans un ControlAdapter, cela peut vous donner une meilleure séparation des fonctions de contrôle VS contrôle écriture html.

public  class FbName:System.Web.UI.WebControls.WebControl
{

    protected override string TagName
    {
        get
        {
            return "fb:name";
        }
    }

    public override void RenderControl(HtmlTextWriter writer)
    {  
        RenderBeginTag(writer);// render only the begin tag.
        //base.RenderContents(writer);
        //base.RenderEndTag(writer);
    }

    public override void RenderBeginTag(HtmlTextWriter writer)
    {
        writer.Write("<" + this.TagName);
        writer.WriteAttribute("uid", "00101010101");
        writer.Write("/>");

    }
}

-Jason

Créé 06/11/2008 à 22:44
source utilisateur

voix
3

Je recommande d'utiliser des constantes HtmlTextWriter:

    protected override void Render(HtmlTextWriter writer)
    {
        AddAttributesToRender(writer);
        writer.Write(HtmlTextWriter.TagLeftChar); // '<'
        writer.Write(this.TagName);
        writer.Write(HtmlTextWriter.SpaceChar); // ' '
        writer.WriteAttribute("uid", "00101010101");
        writer.Write(HtmlTextWriter.SpaceChar); // ' '
        writer.Write(HtmlTextWriter.SelfClosingTagEnd); // "/>"
    }
Créé 29/08/2011 à 13:41
source utilisateur

voix
7

Puisque c'est la partie supérieure SO question qui vient lors de la recherche pour « tag fermeture automatique HtmlTextWriter », ceci est pour tous ceux qui viennent ici qui veut savoir comment faire:

writer.WriteBeginTag("tag");
writer.WriteAttribute("attribute", "attribute value");
// ... add other attributes here ...
writer.Write(HtmlTextWriter.SelfClosingTagEnd);
Créé 12/09/2014 à 18:22
source utilisateur

voix
-1

si vous utilisez Visual Studio s'écouler comme suit:

Outils ---> Options ---> Editeur de texte ---> HTML ----> Mise en forme ---> supprimer insertion automatique balise fermante

Créé 26/02/2015 à 08:37
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more