22

真の ASP.NET コントロールではなく、標準の HTML 要素で runat="server" を使用することは適切ですか? 私は通常の要素の html/text の設定を完全に制御できます。

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

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

違いの例:

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

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

5 に答える 5

19

どちらも 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としてレンダリングされるコントロールです。inputtextareaTextMode

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

于 2012-07-12T21:52:48.657 に答える
11

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

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

コードビハインド:

mySpecialHtml.InnerHtml = "something else";
于 2012-07-12T20:31:21.200 に答える
4

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

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

と解釈されます

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

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

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

于 2012-07-12T20:38:03.753 に答える
1

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

于 2012-07-12T20:57:45.437 に答える