Umbraco foreach les enfants d'un enfant de page
J'ai des nouvelles des postes au sein d'une page d'information à l'intérieur d'une page d'accueil sur mon contenu, la structure
Exemple:
Page d'accueil
- Actualités
- Des Nouvelles Des Postes
Je suis à la recherche de l'actualité sur ma page d'accueil, dans une instruction foreach. Dans ma tête, il devrait être aussi simple que:
@foreach (var homenews in CurrentPage.Children.Children)
{
if (homenews.Name == "News Post")
{
//Do some stuff//
}
}
Évidemment cela ne fonctionne pas si quelqu'un vous avez des idées? Grâce
OriginalL'auteur Phil | 2014-07-11
Vous devez vous connecter pour publier un commentaire.
Lorsque vous êtes à pied de l'arbre, vous devez vous rappeler qu'une propriété (ou une méthode) comme
Children
ouDescendants()
sera de retour d'une collection d'objets, de sorte que vous ne pouvez pas simplement appelerChildren
d'une collection. Vous pouvez uniquement appelerChildren
sur un seul objet.Vous pouvez trouver le bon enfant de la page d'accueil en utilisant quelque chose comme
var newsPage = CurrentPage.Children.Where(x => x.DocumentTypeAlias == "NewsListingPage")
et puis d'en extraire les enfants de cette page.Est-il de la sortie? Le code est ok. Vous avez probablement besoin de l'étape à travers elle avec le débogueur.
J'ai aussi tendance à ajouter de la valeur null vérifie sur le nœud collections
.WhereNotNull()
ou.Where(x => x != null)
. Assurez-vous également que vous disposez de toutes les références pertinentes dans votre point de vue. Vous pouvez également essayer les.Children()
méthode d'extension au lieu de l'appel de propriété.J'obtiens une erreur de serveur: Ne peut pas utiliser une lambda expression comme argument d'une manière dynamique distribué opération sans premier casting à un délégué ou une expression de type d'arbre
J'ai eu
Model.Content.Children.Where(x => x.DocumentTypeAlias == "NewsListingPage").Where("Visible")
de travailOriginalL'auteur Digbyswift
J'ai fini par trouver la page de news par son id et puis c'est les enfants à partir de là. Le code ci-dessous a fonctionné pour moi. Merci les gars.
La page j'ai consulté par l'ID n'aurez plus jamais besoin d'être changé pour mon projet. Donc le code ci-dessus est juste ce que je veux.
Absolument parfait, comme je l'ai dit qu'une opinion. Pages remplacé n'est pas la seule raison, c'est une mauvaise idée. E. g. Quelqu'un de ramasser le code n'aura aucune idée de ce que la page 1094. Où que à pied de l'arbre " donneront le développeur d'une relation claire entre le code et le nœud cible. Aussi, en tant que développeur, ne jamais dire jamais 🙂
OriginalL'auteur Phil
Vous avez besoin de référencer le nœud requis par NodeTypeAlias de il du Type de Document.
Donc, en supposant que l'alias de le DocType de vos articles est “NewsPosts”, puis...
...doit retourner le nom de la première des 3 articles.
OriginalL'auteur Stef
J'ai eu le scénario exact, c'est comment j'ai eu le mien de travail. NodeByID a été très utile nad -1 indique que la racine
OriginalL'auteur mjroodt