我正在尝试构建一个将由站点地图节点列表表示的痕迹路径。 根节点将是第一个,然后是子节点,孙子.......直到当前节点。我试图用递归来做这件事,但总是只得到根节点:
public static List<MvcSiteMapNode> BreadcrumbTrail(MvcSiteMapNode curr)
{
List<MvcSiteMapNode> t = new List<MvcSiteMapNode>();
if (curr.ParentNode == null)
{
t.Add(curr);
return t;
}
else
return BreadcrumbTrail(curr.ParentNode as MvcSiteMapNode);
}
和来电者:
var curr = SiteMap.CurrentNode as MvcSiteMapNode;
List<MvcSiteMapNode> trail = BreadcrumbTrail(curr);
答案 0 :(得分:1)
您只获得根节点,因为您只添加了根节点。您可以通过将当前节点添加到递归的结果来解决此问题。
public static List<MvcSiteMapNode> BreadcrumbTrail(MvcSiteMapNode curr)
{
List<MvcSiteMapNode> t;
if (curr.ParentNode == null)
t = new List<MvcSiteMapNode>();
else
t = BreadcrumbTrail(curr.ParentNode as MvcSiteMapNode);
t.Add(curr);
return t;
}
应该做你正在寻找的事情