Sitecore:获取转发器中droplink的价值

时间:2013-01-28 22:24:28

标签: sitecore

我有以下内容;

<asp:Repeater runat="server" ID="Repeater">
<ItemTemplate>
        <sc:image field="image from droplink" Item='<%# Container.DataItem %>' runat="server" />
</ItemTemplate>

“来自droplink的图片”是一个droplink选择值(Sitecore内容项)。在这个项目中,有一个字段“Image”,它是我想要的源的实际媒体项目。所以上面的方法不起作用,因为这个字段只返回内容项的GUID。

如何从上述转发器中droplink selected item的Image字段中获取图像src?

2 个答案:

答案 0 :(得分:2)

以下答案假设Context Item上的droplink指向Media Item。 (在提问者澄清之前)。可能对其他人有用。

您需要在代码后面使用asp:Image和OnItemDataBound处理程序,并使用e.Item.DataItem(其中e是RepeaterItemEventArgs)来获取绑定的项目。确保e.ItemTypeListItemType.Item。从那里它将是... ...

var item = (Item)e.Item.DataItem;
var dropLink = new InternalLinkField(item.Fields["image from droplink"]);
var mediaItem = dropLink.TargetItem;
if (mediaItem != null)
{
  var options = new MediaOptions { Height = 100, Width = 100 }; //change to your dimensions
  var imageUrl = MediaManager.GetMediaUrl(new MediaItem(mediaItem), options);
  var imageControl = e.Item.FindControl("myImageControlID"); //change to asp:Image ID
  imageControl.ImageUrl = imageUrl;
  imageControl.AlternateText = mediaItem.Alt;
}

如果您支持页面编辑器(我希望您是!),在转发器中您可以使用Edit Frames来编辑每个项目上的图像。 (请注意,链接的示例会在整个ListView周围放置一个编辑框,而您需要将其放在Repeater中,并将Datasource属性数据绑定到当前项ID。)

答案 1 :(得分:2)

您需要使用包含图像字段的实际项目填充sc:Image标记上的ItemDatasource属性。 Item将是Item个对象,而Datasource可以是ID或路径。我认为以下应该这样做。

<sc:Image runat="server" Field="image field" Datasource="<%# ((Item)Container.DataItem)["droplink field"] %>" />