0

umbracoNavihideがfalseに設定されていない状態で、特定のドキュメントタイプの子を取得しようとしています。

以下は正しい出力を生成します。

@foreach (var child in root.Children.Where("ContentTypeAlias == \"DocumentTypehere\""))
{
    if (child.umbracoNaviHide == "False")
    {
        continue;
    }
    <li>@child.Name</li>
}

これはしません:

@foreach (var child in root.Children.Where("umbracoNaviHide == @0 && ContentTypeAlias == \"DocumentTypehere\"","False"))
{
        <li>@child.Name</li>   
}
4

4 に答える 4

2

umbracoNaviHideNiels Hartvigの言葉によると、Umbraco5ではサポートされていません。

これらの特別なエイリアスは[原文のまま][修正:行う]素晴らしい仕事をし、非常に使いやすいですが(それらの使用法について言及しているドキュメントに出くわさなければ、発見することは完全に不可能ですが)、これらの問題はそれらが本当に混乱している「マジック」ストリングを再確認してください(読んでください:それらはコア内のハックです)。

したがって、v4からわかっている形式でv5に戻ることはありません。

したがって、Linqの模倣がとにかく壊れていることに加えて、簡単な答えは、これ(どちらの形式でも)は機能しないはずです(Athulの答えも機能しないはずです)。

長い答えは、ドキュメントタイプの一部として明示的にサポートしている場合にのみ、このプロパティ(および他の同様のプロパティ)を使用できるということです。ただし、機能のリクエストがありますが、それをフォローしてサポートする必要がある場合は、ここumbraco...で「組み込み」プロパティを要求します。

ただし、個人的にはそうしないでください。これらのプロパティを使用してそれらに依存することは問題があるためです(特にニールズ自身が言及した点について)。タスクに対して適切にエイリアス化された独自の専用プロパティを作成します。

于 2012-04-27T15:18:46.723 に答える
0

あなたは簡単にそれをすることができます

@foreach (var child in root.Children.Where("umbracoNaviHide != true &&  NodeTypeAlias == \"DocumentTypehere\" ")
{
    <li>@child.Name</li>   
}
于 2012-04-26T04:59:03.783 に答える
0

あなたはumbracoNaviHideであなたのチェックのために書くことができます:

if (!child.umbracoNaviHide)
{
    continue;
}
<li>@child.Name</li>
于 2012-05-20T22:42:32.633 に答える
0

別のアプローチを追加するだけです-既存の答えのいくつかは私にはうまくいきませんでした-あなたはこれを試すことができます。Umbraco4.11で動作します

@foreach (var child in root.Children.Where(child => child.GetPropertyValue("umbracoNaviHide") == "0"))
{
..
}
于 2013-01-30T14:03:12.097 に答える