umbraco razor-从内容中获取字段

umbraco razor-从内容中获取字段,razor,field,umbraco,umbraco-webforms,Razor,Field,Umbraco,Umbraco Webforms,我有6个相同内容类型的项目“新闻”,在每个项目中我有一个字段newsIntro。我想将特定页面中的字段放在另一个页面上,因此我需要针对一个特定字段,以便它可能是节点1702上的newsIntro。我试过一些东西,比如 @1720.新闻简介 如何针对特定字段 谢谢在学习Razor时,您应该查看一些很棒的资源: -一个由八部分组成的博客文章系列,介绍了Umbraco 4.7中的许多新剃须刀功能,并附有示例 -RazorDynamicNode对象可用的所有属性和方法的PDF(包括@Model) -一个

我有6个相同内容类型的项目“新闻”,在每个项目中我有一个字段newsIntro。我想将特定页面中的字段放在另一个页面上,因此我需要针对一个特定字段,以便它可能是节点1702上的newsIntro。我试过一些东西,比如

@1720.新闻简介

如何针对特定字段


谢谢

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

  • -一个由八部分组成的博客文章系列,介绍了Umbraco 4.7中的许多新剃须刀功能,并附有示例

  • -Razor
    DynamicNode
    对象可用的所有属性和方法的PDF(包括
    @Model

  • -一个Umbraco网站,您可以下载并使用WebMatrix或IIS打开,并查看使用Razor访问属性的各种方式

  • -我们的Umbraco的不同片段、示例等的汇编

  • 但是为了回答您的问题,要获取特定节点的属性,您必须首先获取实际的
    DynamicNode
    对象,然后使用属性别名访问属性值。例如:

    @{
        //Get the node
        dynamic node = Library.NodeById(1720);
    
        // Display the property
        @node.newsIntro
    }
    
    要从当前页面访问属性,只需使用
    Model

    @Model.newsIntro
    


    对于Umbraco 7,我使用以下代码从不同页面获取属性:

    @Umbraco.Content(1720).newsIntro
    

    首先,从TypedContent方法获取IPPublishedContent对象,然后使用GetPropertyValue检索字段的值

    @{
      int nodeId = 1720;
      IPublishedContent contentNode = Umbraco.TypedContent(nodeId);
      var newsIntro = contentNode.GetPropertyValue("newsIntro");
    }
    
    <p>@newsIntro</p>
    
    @{
    int nodeId=1720;
    IPPublishedContent contentNode=Umbraco.TypedContent(nodeId);
    var newintro=contentNode.GetPropertyValue(“newintro”);
    }
    @新闻介绍


    如果内容项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")
    }
    

    这正是我所需要的。我在
    foreach
    循环中需要它,因此它在选择中已经有
    var项
    ,所以我只是将上面的内容更改为
    Umbraco.TypedContent(item.Id)
    ,并省略了第一行。工作得很好!要从
    foreach
    中获取它(例如使用查询生成器),请将硬编码id(
    1720
    )替换为
    item.id
    )。
    @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")
    }