代码之家  ›  专栏  ›  技术社区  ›  Bryan

如何单独呈现媒体库项?

  •  8
  • Bryan  · 技术社区  · 14 年前

    如何使用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();
    

    所以…项目模板中包含什么?我可以使用itemdatabound事件执行一些手动分配,但我不清楚如何执行。我觉得我错过了一些非常简单的东西。

    3 回复  |  直到 9 年前
        1
  •  11
  •   Bartłomiej Mucha    11 年前

    好啊。。。最初我很难回答这个问题,因为我想的角度不对。在此方案中,密钥未使用SiteCore控件。您真正需要做的是从SiteCoreAPI获取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>
    
        2
  •  0
  •   Trayek    12 年前

    不过,我知道这是个老问题:

    您可以使用以下内容:

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

    或者用sc:image替换fieldrenderer。

        3
  •  0
  •   DdW kiran    9 年前

    我一直在想同样的事情,我意识到有一个很大的区别:场渲染器(和sc:image)是 渲染器…MediaItem不是字段,而是项。这就是问题所在:我们应该使用图像字段,或者作为公认的答案状态:使用纯HTML。