2009-08-23 4 views
5

Webフォームアプリケーションでは、サーバーコードの場合、WebControlsを使用するときとHtmlControlsを使用するとき?WebControlとHtmlControlコスとプロがWebフォームアプリケーションでそれらを使用する

<span id="someid" runat="server"></span> 

または

<asp:Label id="someid" runat="server"></asp:Label> 
+0

この投稿は、あなたがそれをrezdしていない場合には役立つかもしれないとしてレンダリングします。あなたの質問に直接答えません。 http://stackoverflow.com/questions/398271/whats-the-difference-between-system-web-ui-htmlcontrols-and-system-web-ui-webcon –

答えて

7

主な違いは、WebControlsがステートフルであるのに対し、HtmlControlsはページサイクル中にページの一部をアドレス指定する方法しか提供しないことです。

この例では、ラベルテキストに値を割り当てると、その値がPostBacksに保持されます。

可能であれば、私の経験ではHtmlControlsを使用するほうがはるかに優れていますが、それらははるかに軽量で、ViewStateをいっぱいにしません。ステートフルにする必要があるときはWebControlを使用します。

たとえば、値を1度しか割り当てることができないため(通常はブロック内にある)、ページタイトルにラベルを使用することができます。 HTMLスパンを使用して、ステータスのフィードバック(ステータスが各ポストバックで更新されるなど)を提供したい場合があります。 ASPの

+2

私はHTMLControlsが "ステートフル "。ランタイム中にSPANのInnerTextを一度読み込むと、後続のポストバックにまたがって永続化されます。 –

+0

HtmlControlsは、ステートフルではありません。つまり、viewstateを使用してその値が前後に送信されないというコンテキストでのみです。しかし、明らかに、DOMはサーバー側で利用可能なので、SPANの価値を得ることができます。 – asyncwait

+0

私は、ページの前のレンダリングのDOMが次のページサイクルに利用可能であるとは思わない。元のDOMを取得し、WebControlを使用する場所を変更することもできます。一方、SPANの内容はポストバック中にポストバックされません。 – Sklivvz

1

私はスパンアプローチを使用します。私は、私が使用する必要があり、spanタグの内部テキストを書きたい場合は、例えば。どのサーバーコントロールを使用しても、最終的にhtmlコントロールとしてレンダリングされます。 データグリッドのようなサーバーコントロールの場合、htmlテーブルを使用してこれらの機能を実現するには、さらにコードを作成する必要があります。 その場合、サーバーコントロールを使用できます。

-3

1つの行動:ボタンは、それは常に=入力タイプとしてレンダリング を提出し、ASPれる:IMAGEBUTTONは常に入力タイプ=画像

関連する問題