2

Umbracoのかみそりテンプレートを使用して現在のページが特定のノードの子孫であるかどうかを確認するにはどうすればよいですか?caseステートメントを使用します。

4

3 に答える 3

3

これらのメソッドが最新バージョンのUmbracoで引き続き機能するかどうかはわかりませんが、4.7.1では、DynamicNodeこれらのメソッドが使用されています。

@Model.AncestorOrSelf(string nodeTypeAlias)
@Model.AncestorOrSelf(int level)
@Model.AncestorOrSelf(Func<DynamicNode, bool> func)

およびそれらのヘルパー関数:

@Model.IsDescendant(DynamicNode[,valueIfTrue][,valueIfFalse])
@Model.IsDescendantOrSelf(DynamicNode[,valueIfTrue][,valueIfFalse])
于 2012-12-07T00:19:39.533 に答える
0

それを行う手っ取り早い方法は、ノードの Path プロパティをチェックすることです (@Model.Path はそれを取得する必要があると思います)。これには、ノードからサイトのルートに戻るパスのカンマ区切りの文字列または数字の配列 (どちらが頭に浮かぶかわからない) のいずれかが含まれている必要があります。そのプロパティで親ノードを確認できます。これにより、LINQ または uQuery を使用したノードのより高価なルックアップを節約できます。

于 2012-12-07T12:10:32.273 に答える
0

http://ucomponents.codeplex.com/の uComponents / uQuery を使用している場合は、次のようなことができます。

var isChildOf = uQuery.GetCurrentNode().GetAncestorNodes().Where(n => n.NodeTypeAlias == "MyHomePage").First() != null;

(注:私はこのコードを試していませんが、本番環境で同様のものを持っています)

于 2012-12-07T00:14:28.817 に答える