web-dev-qa-db-ja.com

Umbraco 7 + Razor:IDでドキュメント/ノードを取得する方法は?

サンプルコードでは、これが.cshtmlファイルからホームページを取得する方法です。

var homePage = CurrentPage.AncestorsOrSelf(1).First();

では、IDで特定のページ/ノード(現在のページに関連しない、たとえばニュースページ)を取得するにはどうすればよいですか?

8
Aximili

まったく同じアプローチを使用できますが、.Where(x => x.Id == newsPageId)を使用します。

または、@Umbraco.TypedContent(newsPageId)または@Umbraco.Content(newsPageId)を使用することもできます。

18
Digbyswift

直接の答えはUmbraco.TypedContent(id)です。しかし!どこからでも「ニュース」ノードを取得したい場合は、以下をお勧めします。 IDの使用は、一部の多言語設定では問題があり、IDが変更されると機能しなくなります。

// 1- Get root node
var site = Model.Content.AncestorOrSelf("Site");

// 2- Get news node
var news = site.Descendant("News");

このアプローチはより動的であり、ニュースノードを使用して子や必要なものをループさせることができます。このためには、サイトタイプとニュースタイプに特定のドキュメントタイプを設定する必要があります。

お役に立てれば!

8