umbraco剃刀 - 从内容中获取字段

时间:2012-06-20 09:33:32

标签: razor field umbraco umbraco-webforms

我有6项相同内容类型的“新闻”,在每个项目中我都有一个字段newsIntro。我想把特定页面中的字段放在另一个页面上,所以我需要定位一个特定的字段,因此它可能是节点1702上的newsIntro。我尝试了一些像

这样的东西

@ 1720.newsIntro

如何定位特定字段

由于

5 个答案:

答案 0 :(得分:15)

在学习剃刀时,您应该看一些很棒的资源:

  1. Umbraco Razor Feature Walkthrough - Umbraco 4.7中许多新Razor功能的八篇博文系列,附有示例。

  2. Razor DynamicNode Cheat Sheet - Razor DynamicNode对象可用的所有属性和方法的PDF(包括@Model)。

  3. Cultiv Razor Examples - 您可以使用WebMatrix或IIS下载和打开的Umbraco网站,并查看使用Razor访问属性的各种方法。

  4. Razor snippets - 来自Our Umbraco的不同片段,示例等的汇编。

  5. 但是在回答您的问题时,要获取特定节点的属性,您必须首先获取实际的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")
}