Render Self-Closing-Tag in ASP.NET-Steuerelement von Control abgeleitet

stimmen
4

Ich arbeite an einem Facebook FBML steuert Bibliothek und möchte meine FBML erstellen Steuerelemente etwas wie die ASP.NET WebControls Bibliothek strukturiert. Ich habe eine Basisklasse, das Rendering standardmäßig behandelt; hier ist meine Render-Methode:


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

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

Was ich möchte, ist gerne für die Wiedergabe auf Basis von UseXfbmlSemantics geändert werden - wenn es wahr ist, sollte es machen, zum Beispiel:

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

Wenn es falsch ist, sollte es mit einem selbstschließenden Tag machen:

<fb:name uid=10300399458 />

Ich kann die „wahren“ Zustand erhalten fast richtig zu arbeiten, aber die selbstschließenden Tag scheint mit der Render- Reihe von Methoden unvereinbar. wenn das der Fall ist es bedeutet leider auch, dass das AddAttributesToRender Muster entweder nicht funktionieren würde. Was es tatsächlich ist die Herstellung dieses:


        <fb:name uid=10300399458>

        </fb:name>

Wie kann ich Htmltextwriter (oder die Htmltextwriter muss ich verwenden), um es ein selbstschließendes Tag zu machen machen? Oder zumindest, wie kann ich es nicht, dass der Zwischenraum machen (so dass der Öffnungs- und Schließ Tags ist unmittelbar nebeneinander)?

Veröffentlicht am 05/11/2008 um 23:32
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
6

Dies sollte erhalten Sie gehen - es wird machen , wie <fb:name uid="00101010101"/>. Sie könnten auch den RenderBeginTag, Render, RenderEndTag außer Kraft setzen. Je nachdem , was Sie tun , kann es einige andere Dinge geht in Render , die Sie benötigen. Sie könnten auch einen Blick in eine Control verwenden, das Ihnen eine bessere Trennung von Steuerungsfunktionalität VS Steuer html Schreiben geben kann.

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

Beantwortet am 06/11/2008 um 22:44
quelle vom benutzer

stimmen
3

Ich würde empfehlen, Htmltextwriter-Konstanten zu verwenden:

    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); // "/>"
    }
Beantwortet am 29/08/2011 um 13:41
quelle vom benutzer

stimmen
7

Da es sich um die Frage der Spitze, so dass aufkommt, wenn für „Htmltextwriter selbstschließenden Tag“ gesucht, das für jedermann kommen hier ist, die wissen will, wie es geht:

writer.WriteBeginTag("tag");
writer.WriteAttribute("attribute", "attribute value");
// ... add other attributes here ...
writer.Write(HtmlTextWriter.SelfClosingTagEnd);
Beantwortet am 12/09/2014 um 18:22
quelle vom benutzer

stimmen
-1

Wenn Sie Visual Studio verwenden, indem Sie diese Schritte:

Tools ---> Optionen ---> Texteditor ---> HTML ----> Formatierung ---> entfernen Auto schließen Tag einfügen

Beantwortet am 26/02/2015 um 08:37
quelle vom benutzer

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