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

Bry*_*yan 8 sitecore

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

<asp:Repeater ID="rptImages" runat="server">
  <ItemTemplate>
    <sc:FieldRenderer  ????>
  </ItemTemplate>
</asp:Repater>
Run Code Online (Sandbox Code Playgroud)

而背后的代码:

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

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

Bry*_*yan 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>
Run Code Online (Sandbox Code Playgroud)

  • MediaManager.GetMediaUrl()不控制使用的扩展名.查看web.config中的Media.RequestExtension设置以禁用.ashx命名. (2认同)