Hai risposto tu stesso alla maggior parte delle tue domande. @Model
e @CurrentPage
sono gli stessi tranne @CurrentPage
è dinamico. Entrambi restituiscono la pagina corrente. Ciò significa che, se si interrompono le visualizzazioni da UmbracoViewPage
, non è possibile utilizzare @CurrentPage
perché questo è disponibile solo su UmbracoViewTemplate
. Personalmente mi piace @Model
più di @CurrentPage
, ma è una scelta personale
@Umbraco
è una bestia completamente diversa. Non restituisce la pagina corrente, ma ha un sacco di metodi per ottenere altri contenuti, media e membri in diversi modi (ad esempio xpath). Ma anche templating e metodi misc come:
- Umbraco.If (condizione, TrueValue [, falseValue])
- Umbraco.Trunctate // testo limite di dimensione
- Umbraco.StripHtml // rimuovere i tag HTML
- Umbraco.Search // cerca testo intero
Per saperne di più sul @Umbraco, visitare il Umbraco helper documentation
Es. Se hai un ID immagine dal nodo corrente utilizzando
var imgId = @Model.Content.GetPropertyValue<string>("img")
allora si potrebbe utilizzare @Umbraco.TypedMedia(imgId)
per ottenere l'oggetto IPublishedContent immagine.
Aggiornamento: Accanto a @ Umbraco.Field ("propertyAlias"), che è una delle aiutanti di modello, è possibile utilizzare anche @ Umbraco.Field (x, "propertyAlias") dove x è un IPublishedContent. Ciò restituirà sempre un IHtmlString che lo rende poco pratico per altre attività di programmazione, ma rende Umbraco.Field() un metodo di supporto molto bello per restituire le proprietà.
Aggiornamento 2: A partire dalla versione 7.4, c'è un ModelBuilder, che permette di definire e utilizzare UmbracoTemplatePage<ContentModels.HomePage>
@Model.Content.BodyText
in seguito. A partire da Umbraco v8 (on the roadmap), il supporto per la dinamica (CurrentPage
su UmbracoTemplatePage
) è stato eliminato. Quindi prepararsi utilizzando ModelsBuilder
e UmbracoViewPage<MyModel>
.