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

Umbraco6+のアップデート

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

ブレナンは正しいです、

var rootNode = new DynamicNode(-1);

同様に動作します!

于 2012-08-14T21:28:46.463 に答える
5

Umbraco 7:

Umbraco.TypedContentAtRoot();
于 2015-01-30T12:13:17.250 に答える
0

私はよくこれを使います。複数のルートノードがある場合、foreachループなしで両方をターゲットにできるように、相対的であることが気に入っています。

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