ASP.NET-动态构造HTML标记

ASP.NET-动态构造HTML标记,asp.net,loops,datatable,html-lists,Asp.net,Loops,Datatable,Html Lists,我有一个关于在我的ASP.NET应用程序的后端代码(c#)上构造HTML标记的问题 假设我有一个数据表,如下所示: 我想动态地(使用多个foreach和if-else条件)将DataTable转换为ul和li的形式,如下所示: 最后,我的预期产出: 实现这一目标的最佳实践是什么? 请帮忙 提前谢谢你 更新: 我在这篇文章中找到了另一种解决方案,本质上你有一个包含其他人(孩子和孙子)的人(父母)的层次结构,因此你可以使用递归函数遍历人对象的子对象。大概是这样的: public class P

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

假设我有一个数据表,如下所示:

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

最后,我的预期产出:

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

提前谢谢你

更新:
我在这篇文章中找到了另一种解决方案,本质上你有一个包含其他人(孩子和孙子)的人(父母)的层次结构,因此你可以使用递归函数遍历
对象的子对象。大概是这样的:

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();
    }
}
公共类人物
{
公共IEnumerable子项{get;set;}
公共字符串名称{get;set;}
公共字符串链接{get;set;}
}
公共类PeopleHtmlGenerator
{
公共字符串GetPeopleHtml(IEnumerable people)
{
返回string.Format(“{0}”,GetChildren(people));
}
私有字符串GetChildren(IEnumerable人)
{
StringBuilder结果=新建StringBuilder();
结果。附录行(
    ); foreach(人与人之间的变量) { result.AppendLine(string.Format(“
  • ”,person.Link,person.Name)); 结果.AppendLine(GetChildren(person.Children)); } 结果。附录行(“
”); 返回result.ToString(); } }
这取决于该表是如何生成的……它是如何生成的,还是数据库中的数据是这样的?该表不是固定的,上面的表是数据的存储方式,这是一个非常优雅的解决方案。