Bitte definieren Sie hohe Leistung und "sehr leicht". Wenn mit "sehr leicht" das gerenderte HTML-Markup gemeint ist, ist das Repeater-Steuerelement die beste Wahl, da Sie das Markup vollständig steuern. Wenn Sie serverseitige Verarbeitung meinen, möchten Sie wahrscheinlich ein benutzerdefiniertes Steuerelement schreiben.
Die Gewinne über den Repeater auf der Serverseite wären jedoch nach dem anfänglichen Laden vernachlässigbar, wenn Sie Output-Caching verwenden können.
Ich habe eine reine HTML-Lösung gegen eine Repeater-Lösung mit Ihrem Beispiel von zwei Zeilen getestet.
Control (leere Seite): 693 Bytes an den Client übertragen, .22 ms
reine HTML-Lösung: 1.029 Bytes Client gerendert, Server-Verarbeitungszeit: 0,26 ms
Repeater Lösung: 2196 Bytes gemacht zum Client, Server Zeit Verarbeitung: 0,47 ms (die Mehrheit der Overhead ist aufgrund einer Radiobuttonlist Kontrolle zu verwenden)
Sie sprechen über 1 kb unkomprimiert und 0,21 Millisekunden Overhead für die Verwendung des Repeaters und Radiobuttonlist.
Im Gegenzug erhalten Sie diese erhalten:
<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>
statt dessen:
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>");
Persönlich bevorzuge ich die erste Option, aber Sie können die zweite bevorzugen.
Kann sich diese Liste basierend auf der Datenbank (oder einer anderen Konfiguration) ändern oder ist sie fest codiert? – Greg
Liste kann nicht fest codiert sein. Es basiert auf der Datenbank. – DotnetDude