【问题标题】:Is it a good idea to write tables using loops in ASP.net?在 ASP.net 中使用循环编写表是个好主意吗?
【发布时间】:2011-10-06 09:44:57
【问题描述】:

我继承了一个 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();
    }

【问题讨论】:

  • 我应该补充一点,显示的值是另一个用户输入的值,因此它们可能包含特殊字符。

标签: asp.net gridview html-table


【解决方案1】:

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

根据这种新体验,简短的回答是,在我看来,在代码隐藏中生成表格(或其他可重复内容)并不是一件好事。代码更难阅读,也违背了拥有DataBound控件的目的,所以对平台的使用不好,但是如果有充分的理由,那么可以例外。 p>

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

【讨论】:

    【解决方案2】:

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

    中继器可能是您更好的选择。

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

    【讨论】:

    • 点赞。 Dangit - 这是我今天第三次准备发布答案,却发现其他人已经发布了同样的内容! :)
    • 请澄清您所说的“这会在演示后构建您的代码。”
    • @mikemanne - 哈哈,我听到了。通常我会被打败。这个网站上有太多优秀、聪明的人无法与之竞争。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2011-07-19
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-15
      相关资源
      最近更新 更多