0

こんにちは親愛なる友人、私はウェブカスタムコントロールを持っています

Windowクラスのこのレンダリング関数

    protected override void RenderContents(HtmlTextWriter wr)
    {
        wr.AddAttribute("runat", "server",true);
        wr.AddAttribute("id", this.UniqueID, false);
        wr.RenderBeginTag(HtmlTextWriterTag.Div);
        wr.RenderEndTag();
        wr.WriteLine();
        base.RenderContents(wr);
    }


ウェブページで使用:

(cc1:Window ID="Window1" runat="server" ) (div) runat="server" id="aaaa"(/div)


ブラウザのソース結果:

(span id="Window1")(div runat="server" id="Window1") (/div) span) (div) id="aaaa"(/div)

4

2 に答える 2

1

質問で実際に質問を述べることは一度もありません。とにかく、カスタム コントロールを のようにレンダリングする必要があると思います<div runat="server">

public class Window : WebControl {
    public Window() : base(HtmlTextWriterTag.Div) {}

    protected override void AddAttributesToRender(HtmlTextWriter writer) {
        writer.AddAttribute(HtmlTextWriterAttribute.Id, UniqueID);
    }
}
  1. HtmlTextWriterTag を受け入れる WebControl でコンストラクターを呼び出す必要があります。
  2. 要素に属性を追加するには、(RenderContents ではなく) AddAttributesToRender をオーバーライドする必要があります。
  3. runat="server"HTMLコードの解析中にのみ使用され、コントロールでは使用されません。
于 2011-01-04T08:57:30.443 に答える
0

あなたの使用例が投稿時のタイプミスとフォーマットエラーだけなのか、それとも実際にこのように使用しているのかはわかりません(ただし、あなたが として投稿<...>したことは理解していますが(...)、これは私の問題ではありません)。


Simon Svenssonの提案に従って、コントロール クラスの実装から始めるべきです。

次に、id="aaaa" を含む div をコントロール div タグ内の html タグにしたい場合は、次のように使用する必要があります (末尾に注意してください</cc1:Window>)。

ウェブページで使用:

<cc1:Window ID="Window1" runat="server">
  <div id="aaaa">Text content here</div>
</cc1:Window>

ブラウザ ソースの結果:

<div id="Window1">
  <div id="aaaa">Text content here</div>
</div>

サイモンrunat="server"が言ったように、主にサーバー コントロールに使用され、レンダリングされた HTML コントロールには意味がありません。

于 2011-01-04T11:15:09.727 に答える