Sitecore:显示保存在类型为 Link Types:Droptree 的字段中的项目名称的有效方法

Sitecore: Efficient way to display the name of Item which is saved in field with type Link Types:Droptree

假设 Sitecore 项目 item 有一个类型为 Link Types:Droptree

的字段 Created by

我想打印字段 Created by 中保存的项目的名称。下面的行 <sc:Text Field="Created by" runat="server"/> 将打印 ItemId。显示此项目名称的有效方法是什么。

我知道我可以从数据库中获取该项目,然后将其名称打印为:

<asp:Label runat="server" ID="lblItemName"></asp:Label>

在代码隐藏中:

 if (!Page.IsPostBack)
            {
                Item currentItem = Sitecore.Context.Item;

                Item relatedItem = Sitecore.Context.Database.GetItem(currentItem["Created by"]);

                lblItemName.Text = relatedItem.Name;
            }

您需要将项目值传递给您的 <sc:Text/> 标签,否则它将使用上下文项目。

<sc:Text Field="Created by" Item="<%# RelatedItem %>" runat="server"/>

在代码后面设置 RelatedItem 的值,并在 Page_Load() 方法的末尾调用 DataBind();

我认为无法使用 <sc:Text /> 呈现项目的名称,因为它是 field 呈现器。

所以你必须像以前那样做:

var currentItem = Sitecore.Context.Item;

// Alternative way to get the linked item
var createdByField = (ReferenceField) currentItem.Fields["Created by"];
var createdByItem = createdByField.TargetItem;
var createdByItemName = createdByItem.Name;

lblItemName.Text = createdByItemName;

如果你想从链接项(createdByItem)而不是当前上下文项中呈现一个字段,你可以这样做:

<sc:Text runat="server" Field="Headline" ID="scRelatedItem" />

并在您后面的代码中将 Item 属性 设置为您要从中读取 Headline 字段的项目:

scRelatedItem.Item = createdByItem;

这样做还可以让编辑人员通过页面编辑器(在 Sitecore 8 中称为体验编辑器)编辑该字段。