5

カスタム コントロールを作成するときに Web コントロールとコントロールのどちらを選択するかについての説明を読んだことがありますが、それだけでは十分ではありません。カスタム コントロールが両方とも UI に何かをレンダリングしているときに、どちらかから継承するのを見てきました。

http://msdn.microsoft.com/en-us/library/yhzc935f.aspx

「コントロールがクライアント上でユーザー インターフェイス (UI) 要素またはその他の可視要素をレンダリングする場合、System.Web.UI.WebControls..::.WebControl (または派生クラス) からコントロールを派生させる必要があります。 renders an element that is not visible in the browser, such as a hidden element or a meta element, raise your control from System.Web.UI..::.Control. WebControl クラスは Control から派生し、次のようなスタイル関連のプロパティを追加しますFont、ForeColor、および BackColor として。さらに、WebControl から派生したコントロールは、追加作業なしで ASP.NET のテーマ機能に参加します。」

WebControl を使用する唯一の理由は、スタイリング機能を使用する場合ですか? 究極的にはstringbuilderで文字列を出力するだけなので、そのことは気にしません。とにかく、コントロールがレンダリングする HTML を形成するために、テーブルのないデザインと文字列をそのまま使用したいと思います。

4

3 に答える 3

10

コントロール

Control クラスから派生させることで、コントロールは、ViewState の使用だけでなく、Control クラスによって提供されるレンダリング メソッドを利用することができます。

Web コントロール

WebControl クラスは Control クラスから派生します。ただし、カスタム コントロールを WebControl から派生させると、フォント サイズ、CSS クラス、背景色など、コントロールの多くの視覚的側面が無料でサポートされます。

どのクラスから派生させる必要がありますか?

UI をほとんど、またはまったく必要としないカスタム コントロールを作成する場合は、Control クラスから派生させる必要があります。コントロールが広範な UI サポートを必要とする場合は、WebControl から派生させる必要があります。

から: http://dotnetslackers.com/articles/aspnet/ASPNETCustomControlsPart1.aspx

于 2009-07-13T18:59:37.120 に答える
2

WebControl は、ユーザーが指示しない限り、テーブルなどをレンダリングしません。それが持っているのは、ほとんどのユーザーが UI でレンダリングするコントロールに期待するスタイリング機能です。

それを使用するのに多くの費用はかかりません。試してみて、問題が発生するかどうかを確認してください。

于 2009-07-13T18:59:28.273 に答える
0

それで、質問がありますか?この 2 つの違いについては、MSDN の記事で十分に説明されていると思います。

于 2009-07-13T19:04:24.957 に答える