如何单独渲染媒体库项目?

发布于 2024-09-26 02:46:31 字数 668 浏览 1 评论 0原文

如何使用 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 事件进行一些手动分配,但我不清楚如何去做。我觉得我在这里错过了一些非常简单的东西。

How do I render a Media Library item image in a sublayout with Sitecore controls? With a normal content Item that has an "Image" field it's a piece of cake... just use the sc:Image or FieldRenderer control. But I have something like this:

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

And the code behind:

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

So... what goes in the ItemTemplate? I'm OK with using the ItemDataBound event to do some manual assignment, but it's unclear to me how to go about that. I feel like I'm missing something really simple here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苍景流年 2024-10-03 02:46:31

好吧...我最初很难回答这个问题,因为我从错误的角度思考这个问题。关键是在这种情况下不使用 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>

OK... I had trouble answering this originally because I was thinking about it from the wrong angle. The key is NOT using Sitecore controls in this scenario. What you really need to do is just get the URL from the Sitecore API and use standard HTML controls:

<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>
⊕婉儿 2024-10-03 02:46:31

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

您可以使用以下内容:

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

或将 FieldRenderer 替换为 sc:Image。

I'm aware it's an old question, however:

You could use the following:

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

Or replace the FieldRenderer with the sc:Image.

预谋 2024-10-03 02:46:31

我一直在想同样的事情,并且我意识到有一个很大的区别:FieldRenderer(和 sc:Image)是Field渲染器... MediaItem 不是字段,而是项目。这就是问题所在:我们应该使用图像字段,或者正如公认的答案所述:使用纯 html。

I've been wondering the same thing, and I've realized that there's one big difference: FieldRenderer (and sc:Image) are FieldRenderers... A MediaItem is not a field, but an item. That's where the problem is: we should use Image fields, or as the accepted answer states: use plain html.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文