我在ASP.NET应用程序中有关于在后端代码(c#)上构造HTML标记的问题。
假设我有一个DataTable,如下所示:
我想将DataTable动态转换(使用多个foreach和if else条件),形式为ul和li,如下所示:
最后我的预期输出:
实现这一目标的最佳做法是什么? 请帮忙。
先谢谢你。
更新 我发现了这篇文章How do I display non-normalized data in a hierarchical structure?
中的另一种替代解决方案答案 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();
}
}