2009-06-10 10 views
22

Exécuter Umbraco 4x Je crée une méthode d'aide en C# que je peux appeler récursivement pour créer des catégories enfant d'un nœud particulier (catégorie).Umbraco - Obtenir le noeud par ID par programme

La méthode prend un parentNodeID en tant que paramètre. J'ai besoin de récupérer les propriétés de ce nœud parent. Je sais que je peux utiliser la méthode statique Node.GetCurrent() mais je cherche quelque chose comme Node.GetNodeById (parentNodeID). Je ne vois tout simplement pas où cette méthode vit. Je sais qu'il existe la méthode umbraco.library.getNodeXMLbyId, mais est-ce que cela me donne la propriété name du noeud?

Me Umbraco N00b :)

Répondre

40

Vous pouvez juste faire

var node = new Node(nodeId). 

Il m'a fallu un certain temps pour trouver aussi!

+0

Wicked. Je savais que ça devait être quelque chose de simple comme ça. Encouragez Sam! – autonomatt

+12

Oui, le choix d'Umbraco d'utiliser des constructeurs pour retourner des instances persistantes existantes est plutôt étrange, et je dirais ... inhabituel. – nicodemus13

+2

+1 pour les deux. Ça m'a aidé. J'ai également besoin d'ajouter en utilisant umbraco.NodeFactory; – Aximili

0

Vous pouvez également faire

Document doc = new Document(nodeId) 

Cela fonctionne comme Node mais obtient les valeurs directement à partir de la base de données au lieu du cache XML. Utilisez ceci si vous allez mettre à jour les valeurs de propriété des documents.

+1

Mais sachez que pour la lecture frontale, vous devez toujours utiliser le nœud XML publié. –

+0

@Markus Très vrai. –

+0

Si vous faites cela dans Umbraco 7, vous obtiendrez l'avertissement - 'umbraco.cms.businesslogic.web.Document' est obsolète: 'Obsolete, Use Umbraco.Core.Models.Content' – user1069816

1

Utilisez cette

umbraco.NodeFactory.Node headerNode = uQuery.GetNode(NodeId); 

namespace add

using umbraco.NodeFactory; 
Questions connexes