如何扩展ListItem以便能够在BulletList中拥有子级

时间:2011-03-27 18:07:43

标签: c# asp.net

使用asp.net C#。 我有BulletList,我想添加将使用子进行渲染的ListItem。 也就是说,在每个<li>内,我可以添加更多要渲染的控件。

我怎样才能做到这一点?

感谢

1 个答案:

答案 0 :(得分:0)

我不确定为什么BulletedList有一个ListItems集合。 ListItem通常用于表单元素(因此是Selected,Value,Text属性),并且用于项目符号列表没有意义。也没有包含子ListItems的属性可以帮助您实现目标。我建议使用你自己的类来做到这一点。这是一个快速模型:

public static class BulletList
{
    public static string RenderList(List<BulletListItem> list) {
        var sb = new StringBuilder();
        if (list != null && list.Count > 0)
        {
            sb.Append("<ul>");
            foreach(var item in list) {
                sb.Append(item.Content);
                sb.Append(BulletList.RenderList(item.Children));
            }
            sb.Append("</ul>");
        }
        return sb.ToString();
    }
}

public class BulletListItem
{ 
    public string Content { get; set; }
    public List<BulletListItem> Children { get; set; }
}

然后您可以创建包含子项的列表并输出...

var items = new List<BulletListItem>();
items.Add(new BulletListItem() { Content = "Root 1" });
items.Add(new BulletListItem() { Content = "Root 2", Children = new List<BulletListItem>() { new BulletListItem() { Content = "Child 2.1" }} });
items.Add(new BulletListItem() { Content = "Root 3" });
Response.Write(BulletList.RenderList(items));