2010-12-17 9 views
1

私は、2列、ラベル、およびラジオボタンリストをレンダリングする簡単な軽量ASP.NETサーバーコントロールを探しています。それは文字通りこのように見えるはずです。どのASP.NETサーバーコントロールを使用する必要がありますか?

Gender  Male/Female 
Recommend us Yes/No 
and so on.. 

私は、このページには、高パフォーマンスのページである必要があり、非常に軽いべきであるとして、リピーターやデータグリッドが過剰であると感じています。

どのサーバーコントロールをお勧めしますか?

+0

このリストはデータベース(またはその他の設定)に基づいて変更できますか、それともハードコードされていますか? – Greg

+0

リストをハードコーディングすることはできません。そのデータベースに基づいています。 – DotnetDude

答えて

0

高性能と「非常に軽い」を定義してください。 「非常に軽い」とは、レンダリングされたHTMLマークアップを意味する場合、マークアップを完全に制御するため、リピータコントロールが最適です。サーバー側の処理を意味する場合は、おそらくカスタムコントロールを作成する必要があります。

しかし、出力キャッシュを使用できる場合は、最初の負荷の後にサーバー側のリピータの利得は無視してもかまいません。


純粋なHTMLソリューションとリピータソリューションをテストしましたが、2行の例があります。
コントロール(空白ページ):クライアントにレンダリング 693バイト、0.22ミリ秒
ピュアHTMLソリューション:クライアントにレンダリング 1,029バイト、サーバ処理時間:0.26ミリ秒
リピータソリューション:レンダリング 2196バイトクライアント、サーバ処理時間に:0.47ミリ秒(オーバーヘッドの大半は、RadioButtonListコントロールを使用してによるものです)

あなたが圧縮されていないとリピータとRadioButtonListのを使用するための0.21ミリ秒のオーバヘッドについて1キロバイトを話しています。

StringBuilder sb = new StringBuilder(); 

sb.Append("<table><tbody>"); 

foreach (Option option in options) 
{ 
    sb.AppendFormat("<tr><td>{0}</td><td>", option.Label); 

    foreach (string label in option.RadioButtonLabels) 
    { 
     sb.AppendFormat("{0}<input type=\"radio\" name=\"{1}\" value=\"{0}\" />", label, option.Label); 
    } 

    sb.Append("</td></tr>"); 
} 

sb.Append("</tbody></table>"); 

は個人的に私が第一のオプションを好むが、あなたは、第二のを好むことがあります。これに代えて

<table> 
    <tbody> 
     <asp:Repeater ID="r" runat="server"> 
      <ItemTemplate> 
       <tr> 
        <td> 
         <asp:Literal ID="l" runat="server" EnableViewState="false" Text='<%# Eval("Label") %>' /> 
        </td> 
        <td> 
         <asp:RadioButtonList ID="rbl" runat="server" EnableViewState="false" 
         DataSource='<%# ((Option)Container.DataItem).RadioButtonLabels %>' 
          RepeatDirection="Horizontal" RepeatLayout="Flow"> 
         </asp:RadioButtonList> 
        </td> 
       </tr> 
      </ItemTemplate> 
     </asp:Repeater> 
    </tbody> 
</table> 

を:

引き換えに、あなたはこれを維持するために取得します。

+0

私はかなり早くこのページにこれらの15-20を持っています。私は最初の選択肢にも傾いていますが、サイズと処理時間を短縮する方法があるかどうかを知りたいと思います。あなたはリピーターレベルでviewstateをオフにしていないことがわかります。その理由は何ですか? – DotnetDude

+0

いいえ、実際はありません。ちょうど監督。 viewstateをオフにすると、すべてのPage_Initをバインドする必要があります。かなり大きなマークアップをレンダリングするRadioButtonListを避ければ、妥当な利益を得ることができると思います。リピータ自体はリーンです。 – Greg

+0

私はこれを書いて30分かけて試してみました。 :sad: – Greg

0

「オーバーヘッド」を最小限に抑えることができるように、ウェブユーザーコントロールとしてのサウンドは最適です。

乾杯、 ステファン

1

私は、このページには、高パフォーマンスのページであると 非常に軽いする必要があります する必要があるとして、リピーターやデータグリッド が過剰であると感じています。

私は純粋なhtmlをお勧めします。

+0

私はラジオボタンをサーバーコントロールにする必要があります – DotnetDude

+0

あなたはhtmlとjavascriptで必要なことをすることができます。

​​性別​​男性の Femalの ...そして、あなたはこのRequest.Form ["gender"]のようなユーザーの選択を得ることができます –

0

私はその柔軟性のためListViewが好きです。

1

私にマイクロ最適化のような匂いがします。あなたのページにリピーターやデータグリッドを置くことは、あなたが上で指定したことのためにあなたのページに全く遅れを生じさせることはありません。それは不要ですが、問題は起こりません。あなたが2400ボーモデムからサイトを提供しているのでなければ、それはあなたが疑うところです。

あなたは、このコントロールは複数のページで再利用されるかどうかを指定していません。そうでない場合は、アプリケーションに不必要な複雑さをWebコントロールとして追加するだけです。上記のように静的コンテンツを表示することだけを考えている場合は、上に表示したようにフィールドを2列のテーブルに、ラベルを1つ、ラジオボタンもう片方に。

コントロールの再利用を計画している場合は、リピーターやデータグリッドを使用せずに、コントロールを通常追加するのと同じようにコントロールを追加することになります。

関連する問題