14

我正在开发一个后端模块,所以Node.GetCurrent()不是一个选项。我需要找到一种方法来调用类似的东西Node currentNode = new Node(parentNodeId);并获取站点的根节点。我在 XSLT 中看到过示例,但在 C# 中没有。有谁知道我怎么能做到这一点?

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

4

6 回答 6

15

根节点始终可用:

var rootNode = new Node(-1);
于 2012-08-13T19:07:16.180 回答
10

Umbraco 7 的更新(也可以在早期版本中使用)

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

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

于 2014-09-11T00:34:27.170 回答
6

Umbraco 6+ 更新

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

    return rootNode;
}

这仅采用文档类型别名并使用当前 Umbraco 上下文将根节点查找为 IPublishedContent。UmbracoHelper 也为您提供了很多选择。

于 2013-12-06T14:20:54.053 回答
5

Umbraco 7:

Umbraco.TypedContentAtRoot();
于 2015-01-30T12:13:17.250 回答
5

布伦南是正确的,

var rootNode = new DynamicNode(-1);

也可以!

于 2012-08-14T21:28:46.463 回答
0

我经常用这个。我喜欢它是相对的,因此如果您有多个根节点,您可以在没有 foreach 循环的情况下同时定位这两个节点。

IPublishedContent topNode = Model.Content.AncestorOrSelf(1);
于 2019-10-23T21:42:37.040 回答