我有 6 个相同内容类型的项目“新闻”,在每个项目中我都有一个字段 newsIntro。我想将字段放在另一个页面上的特定页面中,因此我需要定位一个特定字段,因此它可能是节点 1702 上的 newsIntro。我尝试了一些类似的方法
@1720.newsIntro
如何定位特定领域
谢谢
我有 6 个相同内容类型的项目“新闻”,在每个项目中我都有一个字段 newsIntro。我想将字段放在另一个页面上的特定页面中,因此我需要定位一个特定字段,因此它可能是节点 1702 上的 newsIntro。我尝试了一些类似的方法
@1720.newsIntro
如何定位特定领域
谢谢
在学习 Razor 时,您应该查看一些很棒的资源:
Umbraco Razor Feature Walkthrough - 由八部分组成的博客文章系列,其中包含 Umbraco 4.7 中的许多新 Razor 功能以及示例。
Razor DynamicNode 备忘单DynamicNode
- Razor对象(包括@Model
)可用的所有属性和方法的 PDF 。
Cultiv Razor 示例- 一个 Umbraco 网站,您可以下载并使用 WebMatrix 或 IIS 打开,并查看使用 Razor 访问属性的各种方法。
Razor 片段- 来自 Our Umbraco 的不同片段、示例等的汇编。
但在回答您的问题时,要获取特定节点的属性,您必须首先获取实际DynamicNode
对象,然后使用属性别名来访问属性值。例子:
@{
//Get the node
dynamic node = Library.NodeById(1720);
// Display the property
@node.newsIntro
}
要从当前页面访问属性,您只需使用Model
:
@Model.newsIntro
或者
@Model.bodyText
或者
@Model.Name
首先,从 TypedContent 方法中获取一个 IPublishedContent 对象,然后使用 GetPropertyValue 检索该字段的值。
@{
int nodeId = 1720;
IPublishedContent contentNode = Umbraco.TypedContent(nodeId);
var newsIntro = contentNode.GetPropertyValue("newsIntro");
}
<p>@newsIntro</p>
使用 Umbraco 7,我使用此代码从不同页面获取属性:
@Umbraco.Content(1720).newsIntro
如果内容项 1720 是要使用该值的页面的父级或祖先,则可以像这样递归地获取它:
@Umbraco.Field("newsIntro", recursive: true)
要从内容中获取字段,我使用了这个:
@{
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")
}