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