如何自行呈现媒体库项目?

时间:2010-09-30 21:42:47

标签: sitecore

如何使用Sitecore控件在子布局中呈现媒体库项目图像?对于具有“图像”字段的普通内容项,它只​​是一块蛋糕......只需使用sc:ImageFieldRenderer控件。但我有这样的事情:

<asp:Repeater ID="rptImages" runat="server">
  <ItemTemplate>
    <sc:FieldRenderer  ????>
  </ItemTemplate>
</asp:Repater>

背后的代码:

rptImages.DataSource = Sitecore.Context.Database.SelectItems("/sitecore/Media Library/Images/Some Image Folder/*")
rptImages.DataBind();

那么...... ItemTemplate会发生什么?我可以使用ItemDataBound事件来做一些手动分配,但是我不清楚如何去做。我觉得我在这里缺少一些非常简单的东西。

3 个答案:

答案 0 :(得分:11)

好的......我原本无法回答这个问题,因为我从错误的角度思考它。关键是在此方案中不使用Sitecore控件。您真正需要做的只是从Sitecore API获取URL并使用标准HTML控件:

<asp:Repeater ID="rptImages" runat="server" OnItemCommand="rptImages_ItemCommand">
    <ItemTemplate>
        <img src='<%# Sitecore.StringUtil.EnsurePrefix('/', Sitecore.Resources.Media.MediaManager.GetMediaUrl((Sitecore.Data.Items.Item)Container.DataItem)) %>' />
    </ItemTemplate>
</asp:Repeater>

答案 1 :(得分:0)

我知道这是一个老问题,但是:

您可以使用以下内容:

<asp:Repeater ID="rptImages" runat="server">
    <ItemTemplate>
        <sc:FieldRenderer ID="image" runat="server" FieldName="FieldName" 
              Item="<%# Container.DataItem %>
    </ItemTemplate>
</asp:Repeater>

或者用sc:Image替换FieldRenderer。

答案 2 :(得分:0)

我一直想知道同样的事情,我意识到有一个很大的区别:FieldRenderer(和sc:Image)是 Field Renderers ...一个MediaItem不是一个字段,但是一件物品。这就是问题所在:我们应该使用Image字段,或者作为接受的答案陈述:使用普通的html。