在ASP.net中使用循环编写表是一个好主意吗?

时间:2011-07-15 18:42:42

标签: asp.net gridview html-table

我继承了一个ASP.net Web应用程序,前面的开发人员使用了为每个向用户显示数据的表都有一个ASP.net GridView的约定,即使它不是一个利用分页的页面或以任何方式查看。

我已经厌倦了与GridView相关的一些限制和瑕疵,我想在某些页面上滚动自己。

我的问题:“这是个好主意吗?” “有什么陷阱?”

我的代码如下所示:

   <table>
        <%=EquipmentTableHeadingsRowHTML() %>
        <%foreach(Entry entry in TableEntries)
          { %>
            <%=WriteTableRowForEntry(entry) %>
       <% } %>
   </table>

    public string WriteTableRowForEntry(Entry entry)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("<tr><td>");
        sb.Append(entry.Description);
        sb.Append("</td><td>");
        sb.Append(entry.NumberRequired);
        sb.Append("</td><td>");
        sb.Append(entry.NumberCurrent);
        sb.Append("</td><td>");
        sb.Append(entry.NumberRequired);
        sb.Append("</td><td>");
        sb.Append(entry.CostEach);
        sb.Append("</td><td>");
        sb.Append("TOTAL COST");
        sb.Append("</td></tr>");
        return sb.ToString();
    }

3 个答案:

答案 0 :(得分:2)

没有。这会使用演示文稿构建您的代码。你通常不应该让你的代码生成html。

转发器对您来说可能是更好的选择。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.aspx

答案 1 :(得分:2)

这很有趣..我只是继承了第三方编写的代码,并将它发回给他们告诉他们使用Repeater或List,但后来我意识到他们正在使用几个java脚本框架依赖可预测的ID。旧版本的.NET框架在指定服务器控件的ID方面不太灵活。第三方开发人员在代码隐藏的循环中创建了htmlElements以进行补偿,所以在这种情况下她有充分的理由。

基于这种新体验的简短回答是,在我看来,在代码隐藏中生成表格(或其他可重复内容)并不是一件好事。阅读代码更加困难,并且没有使用DataBound控件的目的,因此平台的使用率很低,但如果有充分的理由,则可以进行异常。

在本代码示例中,我认为这是一件坏事。

答案 2 :(得分:0)

使用ListView,你最终会得到更清晰的标记; - )