ASP.NET - 动态构建HTML标记

时间:2012-03-17 19:40:48

标签: asp.net loops datatable html-lists

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

假设我有一个DataTable,如下所示:

enter image description here

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

enter image description here

最后我的预期输出:

enter image description here

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

先谢谢你。

更新 我发现了这篇文章How do I display non-normalized data in a hierarchical structure?

中的另一种替代解决方案

1 个答案:

答案 0 :(得分:3)

您基本上拥有包含其他人(子项和子项)的人员(父项)层次结构,因此您可以使用递归函数遍历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();
    }
}