Render önzáró Tag ASP.NET egyéni vezérlő származó vezérlő

szavazat
4

Dolgozom a Facebookon FBML vezérli könyvtár és szeretnék létrehozni én FBML vezérlők kissé mintás mint az ASP.NET WebControls könyvtárban. Van egy alap osztály, amely kezeli a rendering alapértelmezés szerint itt a render mód:


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

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

Azt szeretném, van a megjelenítést alapján módosítható UseXfbmlSemantics - ha ez igaz, akkor meg kell tenni, például:

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

Ha ez hamis, akkor tegye a önzáró tag:

<fb:name uid=10300399458 />

Tudok az „igaz” állapotban dolgozni majdnem rendesen, de az önzáró tag úgy tűnik, hogy nem egyeztethető össze a Render- sor módszerekkel. Sajnos, ha ez a helyzet azt is jelenti, hogy a minta AddAttributesToRender nem működik sem. Mi ez ténylegesen termelő ez:


        <fb:name uid=10300399458>

        </fb:name>

Hogyan juthatok HtmlTextWriter (vagy amelyek HtmlTextWriter tudok használni), hogy tegye önzáró tag? Vagy legalábbis, hogyan lehet, hogy ez nem teszi, hogy az ideiglenes helyet (úgy, hogy a nyitó és záró tag azonnal egymás mellett)?

A kérdést 05/11/2008 23:32
a forrás felhasználó
Más nyelveken...                            


4 válasz

szavazat
6

Ez neked megy - ez lehetővé teszi majd, mint <fb:name uid="00101010101"/>. Te is felülbírálhatja a RenderBeginTag, RenderContents, RenderEndTag. Attól függően, hogy mit csinálsz ott lehetnek más dolgok történtek RenderControl hogy szükség van. Te is nézd át egy ControlAdapter, ez adhat jobb szétválasztását ellenőrzési funkciók VS ellenőrzés html írásban.

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

Válaszolt 06/11/2008 22:44
a forrás felhasználó

szavazat
3

Azt javasoljuk, hogy használja HtmlTextWriter állandók:

    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); // "/>"
    }
Válaszolt 29/08/2011 13:41
a forrás felhasználó

szavazat
7

Mivel ez az első SO kérdés, hogy jön ki, ha rákeresel a „HtmlTextWriter önálló záró címke”, ez bárki jön ide, hogy szeretné tudni, hogyan kell csinálni:

writer.WriteBeginTag("tag");
writer.WriteAttribute("attribute", "attribute value");
// ... add other attributes here ...
writer.Write(HtmlTextWriter.SelfClosingTagEnd);
Válaszolt 12/09/2014 18:22
a forrás felhasználó

szavazat
-1

ha használja a Visual Studio menni a következő lépéseket:

Eszközök ---> Beállítások ---> Text Editor ---> HTML ----> formázás ---> eltávolítani Auto helyezze záró tag

Válaszolt 26/02/2015 08:37
a forrás felhasználó

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