2014-09-05 13 views
6

Nel codice di esempio, in questo modo si ottiene la Home page da un file .cshtmlUmbraco 7 + Razor: come ottenere un documento/nodo per ID?

var homePage = CurrentPage.AncestorsOrSelf(1).First(); 

Ora, come faccio ad ottenere una pagina specifica/node (non legati alla pagina corrente, ad es. La pagina delle News) dal suo ID?

risposta

16

È possibile utilizzare esattamente lo stesso approccio ma utilizzare .Where(x => x.Id == newsPageId).

In alternativa, è possibile utilizzare @Umbraco.TypedContent(newsPageId) o @Umbraco.Content(newsPageId).

+0

Hai ragione ma la domanda specifica specificamente Razor e un file .cshtml. Se hai bisogno di una risposta da un altro contesto, fai una domanda :) – Digbyswift

7

La risposta diretta è Umbraco.TypedContent (id). Ma! Se vuoi ottenere il nodo "Notizie" da qualsiasi luogo, ti consiglio quanto segue. L'utilizzo degli ID è problematico per alcune configurazioni multilingue e anche se l'ID cambia, smetterà di funzionare.

// 1- Get root node 
var site = Model.Content.AncestorOrSelf("Site"); 

// 2- Get news node 
var news = site.Descendant("News"); 

Questo approccio è più dinamico e ora è possibile utilizzare il nodo di notizie a ciclo è bambini, o qualsiasi altra cosa che vi serve. Per questo, è necessario impostare tipi di documento specifici per i tipi di sito e di notizie.

Spero che questo aiuti!

Problemi correlati