4

私は Facebook FBML コントロール ライブラリに取り組んでおり、ASP.NET WebControls ライブラリのようにパターン化された FBML コントロールを作成したいと考えています。デフォルトでレンダリングを処理する基本クラスがあります。ここに私のレンダリング方法があります:


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

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

私が望むのは、UseXfbmlSemantics に基づいてレンダリングを変更することです。それが true の場合、レンダリングする必要があります。たとえば、次のようになります。

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

false の場合、自己終了タグでレンダリングする必要があります。

<fb:name uid="10300399458" />

「真」の条件をほぼ正しく動作させることができますが、自己終了タグはメソッドの Render セットと互換性がないようです。残念ながら、その場合は、AddAttributesToRender パターンも機能しないことも意味します。実際に生成しているのは次のとおりです。


        <fb:name uid="10300399458">

        </fb:name>

HtmlTextWriter (またはどの HtmlTextWriter を使用する必要があるか) を取得して、自己終了タグをレンダリングするにはどうすればよいですか? または、少なくとも、その中間スペースをレンダリングしないようにするにはどうすればよいでしょうか (開始タグと終了タグがすぐ隣り合うように)。

4

4 に答える 4

6

これでうまくいくはずです - としてレンダリングされ<fb:name uid="00101010101"/>ます。RenderBeginTag、RenderContents、RenderEndTag をオーバーライドすることもできます。何をしているかによっては、RenderControl で必要な他の処理が行われる場合があります。ControlAdapter の使用を検討することもできます。これにより、コントロール機能とコントロール 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("/>");

    }
}

-ジェイソン

于 2008-11-06T21:44:33.130 に答える
-1

Visual Studio を使用している場合は、次の手順に従います。

ツール ---> オプション ---> テキスト エディター ---> HTML ----> 書式設定 ---> 自動挿入終了タグを削除

于 2015-02-26T08:37:28.620 に答える