Umbraco 7在Razor视图中何时使用@Umbraco vs@CurrentPage vs@Model?
正如标题所述,我应该在Razor视图中何时使用Umbraco 7在Razor视图中何时使用@Umbraco vs@CurrentPage vs@Model?,umbraco,Umbraco,正如标题所述,我应该在Razor视图中何时使用@Umbraco、@CurrentPage或@Model从节点获取属性 @Model.Content.GetPropertyValue()返回强类型对象,而@CurrentPage返回动态对象。但是,使用@Umbraco我可以获得动态(@Umbraco.Content())或强类型对象(@Umbraco.TypedContent()) @Umbracohelper能做@CurrentPage和@Model能做的一切吗?我应该在什么时候使用,为什么使用
@Umbraco
、@CurrentPage
或@Model
从节点获取属性
@Model.Content.GetPropertyValue()
返回强类型对象,而@CurrentPage
返回动态对象。但是,使用@Umbraco
我可以获得动态(@Umbraco.Content()
)或强类型对象(@Umbraco.TypedContent()
)
@Umbraco
helper能做@CurrentPage
和@Model
能做的一切吗?我应该在什么时候使用,为什么使用?你自己回答了大部分问题@Model
和@CurrentPage
是相同的,只是@CurrentPage
是动态的。两者都返回当前页面。这意味着,如果您从UmbracoViewPage
访问视图,则不能使用@CurrentPage
,因为这仅在UmbracoViewTemplate
上可用。我个人喜欢@Model
多于@CurrentPage
,但这是我个人的选择
@Umbraco
是一只完全不同的野兽。它不返回当前页面,但它有一系列方法以不同的方式(例如xpath)获取其他内容、媒体和成员。还包括模板和杂项方法,如:
- Umbraco.If(条件,真值[,假值])
- Umbraco.Trunctate//限制文本大小
- Umbraco.StripHtml//删除html标记
- Umbraco.Search//全文搜索
var imgId = @Model.Content.GetPropertyValue<string>("img")
var imgId=@Model.Content.GetPropertyValue(“img”)
然后,您可以使用@Umbraco.TypedMedia(imgId)
获取图像IPublishedContent对象
更新:
在作为模板帮助程序之一的@Umbraco.Field(“propertyAlias”)旁边,您还可以使用@Umbraco.Field(x,“propertyAlias”),其中x是IPPublishedContent。这将始终返回一个IHtmlString,这使得它对于其他编程工作来说不切实际,但使Umbraco.Field()成为返回属性的非常好的辅助方法
更新2:
从7.4版开始,有一个modelBuilder,允许您定义UmbracoTemplatePage
并在以后使用@Model.Content.BodyText
。从Umbraco v8()开始,对动力学的支持(Umbraco模板页
上的CurrentPage
)据说已被取消。因此,请使用ModelsBuilder
和UmbracoViewPage
进行准备
更新3:
从版本8开始,将只有一个UmbracoViewPage
。这意味着CurrentPage
将不再可用。尝试使用“models builder”方法来证明未来的可靠性