web-dev-qa-db-ja.com

通常のHTMLでrunat = "server"を使用する場合

真のASP.NETコントロールの代わりに、標準のHTML要素でrunat = "server"を使用することが適切かどうか。通常の要素のhtml/textの設定を完全に制御できるので、「不格好な」ASP.NET WebFormsコントロールの代わりにそれを使用しないのはなぜですか?

一方が他方よりも優れている場合、私が知りたいいくつかの興味深い点:

  • パフォーマンスの違い
  • 機能の違い
  • 他の違いはそれほど明白ではありませんか?

違いの例:

<asp:Literal ID="mySpecialHtml" runat="server" />

<div id="mySpecialHtml" runat="server" />
22
Benny

どちらもASP.NETサーバーコントロールです。 HTML要素に対応するものはSystem.Web.UI.HtmlControls名前空間、およびWebコントロールはSystem.Web.UI.WebControls名前空間。

HTMLコントロールはより軽量で、HTML要素に正確に対応していますが、Webコントロールはより多くの機能を備えており、ブラウザーの機能とコントロールの設定に応じて、さまざまなHTML要素としてレンダリングできます。

HTMLコントロールは単一のHTML要素としてレンダリングされますが、Webコントロールは0個以上のHTML要素としてレンダリングされます。たとえば、Literalコントロールは要素としてレンダリングされず、テキストのみを出力します。 RepeaterおよびPlaceHolderコントロールのように、要素を単独でレンダリングしない他のコントロールがあります。一方、たとえば、CheckBoxListコントロールは、いくつかのHTML要素、コンテナとしてのtable、およびその内部の各チェックボックスのinput要素としてレンダリングされます。

さまざまな要素を使用してレンダリングされるコントロールの例は、TextBoxコントロールです。これは、inputプロパティに応じて、textareaまたはTextMode要素としてレンダリングされます。

Webコントロールにはより多くの機能がありますが、より多くのリソースを使用します。彼らはより多くのプロパティを持ち、テーマやデータバインディングのようなものをサポートしています。多くのWebコントロールは、ViewStateにデータを置きます。これは、ページの一部として送信されます。注意しないと、ViewStateが非常に大きくなり、ページのロード時間に影響する可能性があります。

18
Guffa

サーバーのhtmlコントロールを使用した唯一の理由は、独自のhtmlを作成する柔軟性が必要だが、コードビハインドでそのプロパティにアクセスする必要がある場合です。

<div id="mySpecialHtml" runat="server" />

コードビハインド:

mySpecialHtml.InnerHtml = "something else";
11
jrummell

ASP.NETパーサーは、runat = "server"タグ付きの標準のHTML要素をHTMLサーバーコントロールとして解釈します。例:

<a runat="server"></a>

として解釈されます

<asp:HtmlAnchor runat="server"></asp:HtmlAnchor>

したがって、runat = "server"を使用する場合は、対応するHTMLサーバーコントロールを使用していることに注意してください。

さらに、ASP.NETには、より多くの機能、プロパティ、イベントなどを提供する一連のWebサーバーコントロール、つまりHyperLinkコントロールが含まれていますが、場合によっては遅くなることがあります。

4
Raman Zhylich

クライアント側の作業が多い場合はhtmlコントロールを使用し、サーバー側の作業が多い場合(コードビハインド)はasp.netコントロールを使用します。

1
Waqar Janjua

ASP.NETは通常、より多くの機能を備えたWebサーバーコントロールの別のセットを使用していると思いますが、それは実際に好み次第です。仕事が主にサーバー側である場合は、ASP.NETコントロールを使用します。

1
jzacharia