Umbraco-在C#中查找根节点

问题描述 投票:12回答:6

我正在使用后端模块,因此Node.GetCurrent()不是一个选择。我需要找到一种方法来调用类似Node currentNode = new Node(parentNodeId);的方法并获取站点的根节点。我已经在XSLT中看到了示例,但对于C#却一无所获。有人知道我该怎么做吗?

即使只是获取根节点的ID,以便我可以调用new Node()也很好。

c# umbraco
6个回答
15
投票

rootnode始终可用:

var rootNode = new Node(-1);

7
投票

Umbraco 7的更新(可能也适用于早期版本)

@{
    var siteroot = CurrentPage.AncestorOrSelf(1);
}

有关更多信息,请查看文档-> http://our.umbraco.org/Documentation/Reference/Querying/DynamicNode/Collections


6
投票

Umbraco 6+的更新

public static IPublishedContent GetRootNode()
{
    var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
    var rootNode = umbracoHelper.TypedContentSingleAtXPath("//root"));

    return rootNode;
}

这只是使用文档类型别名,并使用当前的Umbraco上下文找到根节点为IPublishedContent。 UmbracoHelper还为您提供了很多选择。


5
投票

Brennan是正确的,

var rootNode = new DynamicNode(-1);

也可以使用!


5
投票

Umbraco 7:

Umbraco.TypedContentAtRoot();

0
投票

我经常使用这个。我喜欢这是相对的,因此,如果您有多个根节点,则可以在不使用foreach循环的情况下将两者作为目标。

IPublishedContent topNode = Model.Content.AncestorOrSelf(1);
© www.soinside.com 2019 - 2024. All rights reserved.