Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从SiteMap.CurrentNode向后循环到SiteMap.RootNode_C#_Asp.net_Xml_Loops_Sitemap - Fatal编程技术网

C# 如何从SiteMap.CurrentNode向后循环到SiteMap.RootNode

C# 如何从SiteMap.CurrentNode向后循环到SiteMap.RootNode,c#,asp.net,xml,loops,sitemap,C#,Asp.net,Xml,Loops,Sitemap,我从asp:SiteMapDataSource获得了一个简单的站点地图: 第1页>第2页>第3页 我想在C#中创建foreach循环,生成该循环以使用asp:SiteMapPath,因为我需要向它添加一些异常。现在我不知道如何从SiteMap.CurrentNode向后循环到SiteMap.RootNode?您要查找的属性是 SiteMapNode currentNode=SiteMap.currentNode; SiteMapNode rootNode=SiteMap.rootNode; 堆栈

我从asp:SiteMapDataSource获得了一个简单的站点地图:

第1页>第2页>第3页


我想在C#中创建foreach循环,生成该循环以使用asp:SiteMapPath,因为我需要向它添加一些异常。现在我不知道如何从SiteMap.CurrentNode向后循环到SiteMap.RootNode?

您要查找的属性是

SiteMapNode currentNode=SiteMap.currentNode;
SiteMapNode rootNode=SiteMap.rootNode;
堆栈节点堆栈=新堆栈();
while(currentNode!=rootNode)
{
nodeStack.Push(当前节点);
currentNode=currentNode.ParentNode;
}
//如果要在列表中包括RootNode
nodeStack.Push(rootNode);
SiteMapNode[]breadCrumbs=nodeStack.ToArray();

您要找的房产是

SiteMapNode currentNode=SiteMap.currentNode;
SiteMapNode rootNode=SiteMap.rootNode;
堆栈节点堆栈=新堆栈();
while(currentNode!=rootNode)
{
nodeStack.Push(当前节点);
currentNode=currentNode.ParentNode;
}
//如果要在列表中包括RootNode
nodeStack.Push(rootNode);
SiteMapNode[]breadCrumbs=nodeStack.ToArray();

谢谢你的工作。但是,当输出从当前节点开始而不是从根节点开始时,如何反转此循环?使用堆栈,并将()每个节点推送到堆栈上。然后Stack.ToArray()将按照您要查找的顺序返回一个数组。顺便说一句,如果这已经回答了您的问题,您可以单击左侧的勾号,以防止问题出现在网站的“未回答的问题”区域。谢谢。但是,当输出从当前节点开始而不是从根节点开始时,如何反转此循环?使用堆栈,并将()每个节点推送到堆栈上。然后Stack.ToArray()将按照您要查找的顺序返回一个数组。顺便说一句,如果这已经回答了您的问题,您可以单击左侧的勾号,以防止问题出现在网站的“未回答的问题”区域中。
SiteMapNode currentNode = SiteMap.CurrentNode;
SiteMapNode rootNode = SiteMap.RootNode;
Stack<SiteMapNode> nodeStack = new Stack<SiteMapNode>();

while (currentNode != rootNode)
{
    nodeStack.Push(currentNode);

    currentNode = currentNode.ParentNode;
}

// If you want to include RootNode in your list
nodeStack.Push(rootNode);

SiteMapNode[] breadCrumbs = nodeStack.ToArray();