【问题标题】:ASP.NET - Construct HTML Tags DynamicallyASP.NET - 动态构造 HTML 标签
【发布时间】:2012-03-20 03:35:05
【问题描述】:

我有一个关于在我的 ASP.NET 应用程序中的后端代码 (c#) 上构造 HTML 标记的问题。

假设我有一个如下的数据表:

我想动态转换(使用多个 foreach 和 if else 条件)DataTable 为 ul 和 li 的形式,如下所示:

最后是我的预期输出:

实现这一目标的最佳做法是什么? 请帮忙。

先谢谢你了。

更新: 我从这篇帖子 How do I display non-normalized data in a hierarchical structure?

中找到了另一个替代解决方案

【问题讨论】:

  • 这取决于该表是如何生成的...它是如何生成的,还是数据库中的数据是这样的?
  • 表不固定,上表是数据怎么存储的

标签: asp.net loops datatable html-lists


【解决方案1】:

本质上,您有一个包含其他人(孩子和孙子)的人(父母)层次结构,因此您可以使用递归函数遍历 Person 对象的孩子。像这样的:

public class Person
{
    public IEnumerable<Person> Children { get; set; }
    public string Name { get; set; }
    public string Link { get; set; }
}

public class PeopleHtmlGenerator
{
    public string GetPeopleHtml(IEnumerable<Person> people)
    {
        return string.Format("<div>{0}</div>", GetChildren(people));
    }

    private string GetChildren(IEnumerable<Person> people)
    {
        StringBuilder result = new StringBuilder();
        result.AppendLine("<ul>");
        foreach (var person in people)
        {
            result.AppendLine(string.Format("<li><a href=\"{0}\">{1}</a></li>", person.Link, person.Name));
            result.AppendLine(GetChildren(person.Children));
        }
        result.AppendLine("</ul>");
        return result.ToString();
    }
}

【讨论】:

  • 这是一个非常优雅的解决方案。
猜你喜欢
  • 2014-11-14
  • 2011-06-07
  • 2012-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 2010-12-08
  • 1970-01-01
相关资源
最近更新 更多