高性能と「非常に軽い」を定義してください。 「非常に軽い」とは、レンダリングされた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>
を:
引き換えに、あなたはこれを維持するために取得します。
このリストはデータベース(またはその他の設定)に基づいて変更できますか、それともハードコードされていますか? – Greg
リストをハードコーディングすることはできません。そのデータベースに基づいています。 – DotnetDude