質問

最近、独自のWebControlsを作成することを学びましたが、RenderとRenderControlの違いにまだ気がありません。私はRenderを使い始めましたが、ある時点でRenderControlを使い始めました。私が悪い習慣を形成している場合、私は自分のやり方で設定される前に、今芽でそれを挟みたいです。

役に立ちましたか?

解決

RenderControlは、必要なものを提供する既存のコントロールがある場合に使用されるため、レンダリング方法を活用できます。

htmlのレンダリング方法を完全に制御する必要がある場合は、レンダリングを使用します。

もちろん、プログラミング時間を最適に使用するために2つを組み合わせることができます...

編集
これについてのより良い説明と、いつ使用すべきかについての優れたポイントについては、 mhenry1384 からの回答をご覧ください。 a>。

他のヒント

これは良い読み物です: Render vs RenderControl

リンクからの抜粋:

  

レンダリング メソッドにより、   書き込みによって自身をレンダリングするコントローラー   応答ストリームへのHTML出力。   これはへの参照を渡します   HTMLTextWriterオブジェクト、書き込み可能   応答ストリームに直接。この   派生するときにメソッドを使用する必要があります   コントロールから直接。

     

RenderControl メソッドが使用されます   ページごとに各個人をレンダリングする   コントロール。それはの消費者を可能にします   クラスをレンダリングして、次のことができます   次の場合に子コントロールをレンダリングするために使用します   複合コントロールを使用しています。   また、注意すべきことは、これが   可視性の場合は呼び出されません   コントロールのプロパティは   false。

Renderは保護されたメソッドです。つまり、派生クラスのみがアクセスできます。イベントライフサイクル内で呼び出されます。コードで明示的に呼び出さないでください。

RenderControlは、必要なときにRenderメソッドを呼び出すことができるパブリックメソッドです。たとえば、ControlsCollectionにControlsを格納するカスタムコントロールで使用しますが、テーブル内の独自のセルにそれらをレンダリングします。例:

   writer.Write(""):
   foreach(Control ctl in Controls)
   {
      writer.Write("")
      ctl.RenderControl(writer);
      writer.Write("");
   }
   writer.Write("");

イベントライフサイクルで呼び出されるRenderControlではなく、常にRenderをオーバーライドする必要があります(既に述べたように)

http://forums.asp.net/t/909220.aspx/1 <から/ a>、申し訳ありませんが、私の回答はそこからコピーアンドペーストするだけですが、このような非常に明確な説明を書き換えるポイントはあまりありませんでした)

私はまだMSがRender()をパブリックメソッドにしない理由をまだ理解していません。別のRenderControl()が必要なのはなぜですか?その理由は、これまでに与えられたすべての答えから欠落しています。それを説明できる最初の人は、輝かしい賛成を得ます。

RenderControlは、子コントロールを表示するページに使用されます。レンダリングにより、個々のコントロールがそれ自体をレンダリングできます。

scroll top