Tag Render de închidere automată în control particularizat ASP.NET derivate de la control

voturi
4

Sunt de lucru pe Facebook FBML controlează biblioteca și-ar dori să creeze FBML meu controale oarecum model ca biblioteca ASP.NET WebControls. Am o clasă de bază care se ocupă de redare în mod implicit; aici e metoda mea face:


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

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

Ceea ce aș dori este ca redarea să fie modificate pe baza UseXfbmlSemantics - dacă este adevărat, ar trebui să facă, de exemplu:

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

Când este fals, ar trebui să facă cu o etichetă cu închidere automată:

<fb:name uid=10300399458 />

Pot obține starea „adevărat“ pentru a lucra aproape corect, dar tag-ul auto-închidere pare a fi incompatibil cu setul Render- de metode. Din păcate, în cazul în care este cazul, înseamnă, de asemenea, că modelul AddAttributesToRender nu ar funcționa, fie. Ceea ce se produce de fapt este aceasta:


        <fb:name uid=10300399458>

        </fb:name>

Cum pot obține HtmlTextWriter (sau care HtmlTextWriter am nevoie pentru a folosi) pentru a face face o etichetă cu auto-închidere? Sau, cel puțin, cum pot face aceasta nu face ca spațiu intermediar (astfel încât de deschidere și închidere tag-urile sunt imediat unul lângă altul)?

Întrebat 05/11/2008 la 23:32
sursa de către utilizator
În alte limbi...                            


4 răspunsuri

voturi
6

Acest lucru ar trebui să te duci - aceasta va face ca <fb:name uid="00101010101"/>. Ai putea înlocui , de asemenea, RenderBeginTag, RenderContents, RenderEndTag. În funcție de ceea ce faci pot exista alte lucruri se întâmplă în RenderControl care ai nevoie. Ai putea uita , de asemenea , într - o folosind ControlAdapter, acest lucru s -ar putea oferi o mai bună separare a funcționalității de control VS scris de control 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

Publicat 06/11/2008 la 22:44
sursa de către utilizator

voturi
3

Aș recomanda să utilizați constante 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); // "/>"
    }
Publicat 29/08/2011 la 13:41
sursa de către utilizator

voturi
7

Deoarece aceasta este partea de sus, întrebarea care apare atunci când caută „HtmlTextWriter etichetă de închidere de sine“, acest lucru este pentru oricine vine aici care vrea să știe cum să facă acest lucru:

writer.WriteBeginTag("tag");
writer.WriteAttribute("attribute", "attribute value");
// ... add other attributes here ...
writer.Write(HtmlTextWriter.SelfClosingTagEnd);
Publicat 12/09/2014 la 18:22
sursa de către utilizator

voturi
-1

dacă utilizați Visual Studio du-te de acești pași:

Instrumente ---> Options ---> Text Editor ---> HTML ----> Formatare ---> Eliminare automată a insera tag-ul close

Publicat 26/02/2015 la 08:37
sursa de către utilizator

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