我有6项相同内容类型的“新闻”,在每个项目中我都有一个字段newsIntro。我想把特定页面中的字段放在另一个页面上,所以我需要定位一个特定的字段,因此它可能是节点1702上的newsIntro。我尝试了一些像
这样的东西@ 1720.newsIntro
如何定位特定字段
由于
答案 0 :(得分:15)
在学习剃刀时,您应该看一些很棒的资源:
Umbraco Razor Feature Walkthrough - Umbraco 4.7中许多新Razor功能的八篇博文系列,附有示例。
Razor DynamicNode Cheat Sheet - Razor DynamicNode
对象可用的所有属性和方法的PDF(包括@Model
)。
Cultiv Razor Examples - 您可以使用WebMatrix或IIS下载和打开的Umbraco网站,并查看使用Razor访问属性的各种方法。
Razor snippets - 来自Our Umbraco的不同片段,示例等的汇编。
但是在回答您的问题时,要获取特定节点的属性,您必须首先获取实际的DynamicNode
对象,然后使用属性别名来访问属性值。例如:
@{
//Get the node
dynamic node = Library.NodeById(1720);
// Display the property
@node.newsIntro
}
要从当前页面访问媒体资源,只需使用Model
:
@Model.newsIntro
或
@Model.bodyText
或
@Model.Name
答案 1 :(得分:5)
首先,从TypedContent方法获取一个IPublishedContent对象,然后使用GetPropertyValue检索该字段的值。
@{
int nodeId = 1720;
IPublishedContent contentNode = Umbraco.TypedContent(nodeId);
var newsIntro = contentNode.GetPropertyValue("newsIntro");
}
<p>@newsIntro</p>
答案 2 :(得分:2)
使用Umbraco 7,我使用此代码从不同页面获取属性:
@Umbraco.Content(1720).newsIntro
答案 3 :(得分:0)
如果内容项1720是您要使用该值的页面的父或祖先,您可以像这样递归地获取它:
@Umbraco.Field("newsIntro", recursive: true)
答案 4 :(得分:0)
要从内容中获取字段,我使用了这个:
@{
var selection = Umbraco.TypedContent(contentId).Children()
.Where(x => x.IsVisible())
.OrderBy("CreateDate");
}
@foreach(var item in selection){
@item.GetPropertyValue("fieldName1")
@item.GetPropertyValue("fieldName2")
@item.GetPropertyValue("fieldName_N")
}