WebControl作成におけるRenderとRenderControlの違いは何ですか?
-
22-07-2019 - |
質問
最近、独自の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をオーバーライドする必要があります(既に述べたように)
私はまだMSがRender()をパブリックメソッドにしない理由をまだ理解していません。別のRenderControl()が必要なのはなぜですか?その理由は、これまでに与えられたすべての答えから欠落しています。それを説明できる最初の人は、輝かしい賛成を得ます。
RenderControlは、子コントロールを表示するページに使用されます。レンダリングにより、個々のコントロールがそれ自体をレンダリングできます。