Kontrol türetilen ASP.NET özel denetim Render Otomatik Kapanan Etiketi

oy
4

Ben bir Facebook FBML üzerinde çalışıyorum kitaplığını kontrol ve benim FBML biraz ASP.NET Webcontrols kütüphanesi gibi desenli denetimlerini oluşturmak istiyorum. Ben varsayılan olarak işleyen bir temel sınıf var; İşte benim işlemek bir yöntem vardır:


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

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

render değiştirilecek için ne istiyorum UseXfbmlSemantics dayanan - bu doğruysa, o örneğin oluşturulması gerekir:

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

Yanlışsa zaman, kendi kendine kapanan etiketiyle işlemek olmalıdır:

<fb:name uid=10300399458 />

Ben gerçek durum neredeyse düzgün çalışması için alabilirsiniz, ama kendi kendine kapanan etiket yöntemlerinin Render- seti ile uyumsuz gibi görünüyor. Eğer durum buysa yazık ki o da AddAttributesToRender desen ya işe yaramaz demektir. Ya aslında üretiyor şudur:


        <fb:name uid=10300399458>

        </fb:name>

Nasıl alabilirim HtmlTextWriter bir kendi kendine kapanan etiketi render ederek (veya HtmlTextWriter ı kullanmak gerekir yapmak)? Ya da en azından, nasıl (açılış ve kapanış etiketleri hemen yanındaki birbirlerine böylece) o geçici boşluk oluşturmaması yapabilir?

Oluştur 05/11/2008 saat 23:32
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
6

O kadar verecek - Bu gitmeliyiz <fb:name uid="00101010101"/>. Ayrıca, RenderEndTag RenderBeginTag, RenderContents geçersiz olabilir. İhtiyacınız RenderControl oluyor başka şeyler olabilir orada ne yaptığını bağlı. Ayrıca ControlAdapter kullanarak içine, bu size kontrol html yazı VS kontrol işlevinden daha iyi ayrılmasını verebilir görünebilir.

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

Cevap 06/11/2008 saat 22:44
kaynak kullanıcı

oy
3

Ben HtmlTextWriter sabitlerini kullanmak tavsiye ederim:

    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); // "/>"
    }
Cevap 29/08/2011 saat 13:41
kaynak kullanıcı

oy
7

Bu olduğundan üst SO bu kimse nasıl yapılacağını bilmek istediği buraya gelen yönündedir, "NotHtmlTextWriter kendini kapanış etiketinin" ararken o çıkageldi soru:

writer.WriteBeginTag("tag");
writer.WriteAttribute("attribute", "attribute value");
// ... add other attributes here ...
writer.Write(HtmlTextWriter.SelfClosingTagEnd);
Cevap 12/09/2014 saat 18:22
kaynak kullanıcı

oy
-1

Visual stüdyo kullanırsanız bu adımlar gitmek:

Araçlar ---> Seçenekler ---> Metin Düzenleyici ---> HTML ----> Biçimlendirme ---> Otomatik Kapatma etiketi eklemek kaldırmak

Cevap 26/02/2015 saat 08:37
kaynak kullanıcı

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