我正在尝试构建一个诊断工具,因此您从列表中选择一个项目,它会显示另一个列表,您选择另一个,依此类推-因此可以根据需要将诊断问题隐藏得尽可能深,例如:
从中挑选:
Software - Microsoft - Outlook - How do I?
- Errors
- Word - How do I?
- Errors
- Excel - How do I?
- Errors
-Lotus
Hardware -PC
-Laptop
Network -Firewall
这些将在表中定义为:
id parent_id Title
1 0 Software
2 0 Hardware
3 0 Network
4 1 Microsoft
5 1 Lotus
6 4 Outlook
7 4 Word
8 4 Excel
9 5 How do I?
10 5 Errors
...etc
我已经看到了对 MVCSiteMap 的引用——我以类似的方式使用了 webforms 站点地图——但这需要是动态的,以便面包屑显示以下链接:
Software > Microsoft > Excel > How do I? > Freeze panes
我的表模型是:
public class Forum
{
public int id { get; set; }
public int parent_id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
}
我的控制器中的代码是:
var bc = db.Fora.FirstOrDefault(i => i.id == id);
var cbh = new List<Forum>();
if (bc != null)
{
var parent = bc.parent_id;
while (parent != null)
{
cbh.Insert(0, parent);
parent = parent.Parent;
}
}
我要做的是建立一个新的论坛列表,然后我可以列出并从中生成面包屑。我遇到困难的地方是:
cbh.Insert(0, parent);
parent = parent.Parent;
我怀疑我的控制器代码在这两行中有错误,或者我的论坛模型需要从parent_id到id的引用来创建层次结构。
谁能帮我完成我的最后一块拼图?
谢谢,
标记