如何使用Sitecore控件在子布局中呈现媒体库项目图像?对于具有“图像”字段的普通内容项,它只是一块蛋糕......只需使用sc:Image
或FieldRenderer
控件。但我有这样的事情:
<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事件来做一些手动分配,但是我不清楚如何去做。我觉得我在这里缺少一些非常简单的东西。
答案 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。