In einem Teilansichtsmakro versuche ich den ersten Vorgänger- oder Selbstknoten zu erhalten, der eine Eigenschaft namens "breakInheritance" enthält und den Wert True
hat. Ich habe diese Aussage/Abfrage seit ungefähr einer Stunde angegriffen, während ich um SO und die Our.Umbraco Foren jage, aber ich fürchte, dass ich nirgendwohin komme. Ich denke, das sollte ziemlich geradlinig sein.So erhalten Sie den ersten Elternknoten mit boolescher Eigenschaft in Umbraco 7
Abfrage
var nodeToUse = CurrentPage.AncestorOrSelf(x => (x.HasProperty("breakInheritance") && x.GetPropertyValue<bool>("breakInheritance")));
Der Lambda-Ausdruck in rot unterstrichen wird und sagt - Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type
Ich habe Tonnen von Ressourcen zu diesem Fehler gefunden, aber in allen Fällen, die ich gesehen habe Es ist eine benutzerdefinierte Erweiterungsmethode, die sie einfach bearbeiten können, also hat es mir nicht wirklich geholfen.
Das ist großartig, vielen Dank für die Tipps. Ich hatte auch keine Ahnung, dass Sie einen Lambda-Ausdruck an die Erweiterungsmethode FirstOrDefault() übergeben können. – user3267755
Gern geschehen. Ein weiterer Trick besteht darin, den Dokumenttyp-Alias an "AncestorsOrSelf" ("docTypeAlias") zu übergeben, was es Ihnen ermöglichen könnte, basierend auf dem Dokumenttyp zu filtern, anstatt ".HasProperty()" zu verwenden. Es ist vielleicht nicht immer möglich, aber ich bevorzuge das, weil Eigenschaftsnamen/Aliase sich im Allgemeinen häufiger ändern als Dokumenttypen. – elolos