我正在寻找一个简单的轻量级ASP.NET服务器控件来呈现2列,标签和单选按钮列表。它确实应该是这样的。
Gender Male/Female
Recommend us Yes/No
and so on..
我觉得转发器或数据网格是一种矫枉过正,因为这个页面需要高性能的页面,并且应该非常轻。
您建议使用哪种服务器控件?
答案 0 :(得分:1)
我觉得是转发器或数据网格 这个页面需要的是一种矫枉过正 是高性能的页面,应该是 很轻。
我建议使用纯HTML。
答案 1 :(得分:1)
闻起来像微优化给我。对于您在上面指定的内容,在您的页面上放置转发器或数据网格将导致您的页面完全没有延迟 - 这是不必要的,但它不会导致问题。这是除非你用2400波特调制解调器为你的网站服务,我怀疑你是谁。
您尚未指定此控件是否会在多个页面上重复使用。如果不是,那么您只需通过将其作为Web控件添加到应用程序中,就会增加不必要的复杂性。如果您计划进行的只是显示上面的静态内容,只需保持简单并显示字段,就像您在上面显示的那样 - 在两列表格中,标签合在一起,以及单选按钮在另一个。
如果您打算重用控件,我的投票仍然是添加控件,就像通常添加控件一样 - 不使用转发器或数据网格。
答案 2 :(得分:0)
听起来像Web用户控件最适合您,因为您可以将“头顶”保持在最低限度。
干杯, 斯蒂芬
答案 3 :(得分:0)
我喜欢ListView
的灵活性。
答案 4 :(得分:0)
请定义高性能和“非常轻”。如果“非常轻”是指渲染的HTML标记,则Repeater控件是最佳选择,因为您完全控制了标记。如果您的意思是服务器端处理,您可能想要编写自定义控件。
但是,如果可以使用输出缓存,那么在初始加载后,服务器端转发器的增益可以忽略不计。
我用两行示例测试了纯HTML解决方案与转发器解决方案
控制(空白页): 693字节呈现给客户端,.22毫秒
纯HTML解决方案:向客户端呈现1,029字节,服务器处理时间:.26毫秒
转发器解决方案: 2,196字节呈现给客户端,服务器处理时间:.47毫秒(大部分开销是由于使用radiobuttonlist控件)
你说的是1kb未压缩和使用转发器和radiobuttonlist的.21毫秒开销。
作为交换,你可以保持这个:
<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>
而不是:
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>");
我个人更喜欢第一种选择,但你可能更喜欢第二种选择。