След с использованием встроенной рекурсии List
Я пытаюсь построить цепочку, которая будет представлена списком узлов карты сайта. сначала будет корневой узел, затем дочерний элемент, внук....... до текущего узла. Я пытаюсь сделать это с помощью рекурсии, но всегда получаю только корневой узел:
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);
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;
}
должен делать то, что вы ищете