你自己回答了你的大部分問題。 @Model
和@CurrentPage
是相同的,但@CurrentPage
是動態的。都返回當前頁面。這意味着,如果您從UmbracoViewPage
中獲得您的意見,則不能使用@CurrentPage
,因爲這僅適用於UmbracoViewTemplate
。我個人喜歡@Model
超過@CurrentPage
,但它是個人選擇
@Umbraco
是一個完全不同的野獸。它不返回當前頁面,但它有一堆方法以不同的方式獲取其他內容,媒體和成員(例如xpath)。而且模板和其它方法,如:
- Umbraco.If(條件,trueValue [,falseValue])
- Umbraco.Trunctate //限制文本大小
- Umbraco.StripHtml //刪除HTML標籤
- Umbraco.Search //全文搜索
要知道更多關於@Umbraco,請訪問Umbraco helper documentation
例如如果您使用
var imgId = @Model.Content.GetPropertyValue<string>("img")
當前節點得到的圖像ID,那麼你可以使用@Umbraco.TypedMedia(imgId)
來獲取圖像IPublishedContent對象。
更新: 下一步@ Umbraco.Field( 「propertyAlias」),這是模板的一個助手,你也可以使用@ Umbraco.Field(X, 「propertyAlias」),其中x是IPublishedContent。這將始終返回一個IHtmlString,這使得其他編程工作不切實際,但使Umbraco.Field()成爲一個非常好的幫助方法來返回屬性。
更新2: 從7.4版本開始,有一個模型構建器允許您定義UmbracoTemplatePage<ContentModels.HomePage>
後來就用@Model.Content.BodyText
。據稱從Umbraco v8(on the roadmap)開始,動態支持(CurrentPage
在UmbracoTemplatePage
)據說會被刪除。所以請使用ModelsBuilder
和UmbracoViewPage<MyModel>
進行準備。