2012-07-12 21 views
19

実際のASP.NETコントロールではなく、標準のHTML要素でrunat = "server"を使用するのが適切ですか?私は、通常の要素のhtml /テキストを設定することを完全にコントロールしています。なぜ、 "clunky"なASP.NET WebFormsコントロールの代わりに使用しないのですか?通常のHTMLでrunat = "server"を使用する場合

一方が他方、私が知りたいのですが興味のあるいくつかのポイントよりも優れている場合:

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

例差:私は私自身のHTMLを書いたが、まだそれは背後にあるコードのプロパティのアクセスするために必要な柔軟性を必要とするとき、私は、サーバーのHTMLコントロールを使用していた

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

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

答えて

16

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

HTMLコントロールはより軽量で、HTML要素と完全に対応していますが、Webコントロールにはより多くの機能があり、ブラウザの機能とコントロールの設定によって異なるHTML要素としてレンダリングできます。

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

異なる要素を使用してレンダリングされた制御の例は、いずれかinputまたはそのTextMode性質に応じtextarea要素としてレンダリングされるTextBox制御、です。

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

10

唯一の理由です。背後

mySpecialHtml.InnerHtml = "something else"; 
私は、クライアント側でより多くの仕事があるときにHTMLコントロールを使用して、サーバー側でより多くの仕事があるときにasp.netのコントロールを使用することを好む
1

(コード:背後にあるコードで

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

)。

4

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

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

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

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

として解釈されます。

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

+0

+1実際にはこのコントロールをサーバーコントロールに変換しているときに、HTMLコントロールにrunat = "server"を追加すると何も変更されないと考えるユーザーもいます。 –

1

ASP.NETは、通常、より多くの機能を備えたさまざまなWebサーバーコントロールを使用していると思いますが、実際にはあなたの好みに応じています。あなたの仕事が主にサーバー側の場合、私はASP.NETコントロールを使用します。