我应该使用哪个ASP.NET服务器控件?

时间:2010-12-17 15:31:26

标签: asp.net asp.net-2.0

我正在寻找一个简单的轻量级ASP.NET服务器控件来呈现2列,标签和单选按钮列表。它确实应该是这样的。

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

我觉得转发器或数据网格是一种矫枉过正,因为这个页面需要高性能的页面,并且应该非常轻。

您建议使用哪种服务器控件?

5 个答案:

答案 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>");

我个人更喜欢第一种选择,但你可能更喜欢第二种选择。