0

我想要实现的是获取图像的完整路径,将它们分配给 HTML 图像控件的源属性。此图像放置在中继器控件中。

这里的代码:

<asp:Repeater runat="server" ID="flashImagesRepeater" >
<HeaderTemplate>
    <table>
        <tr id="bodyImagesTr" >
            <td>
</HeaderTemplate>
<ItemTemplate>
    <sc:Link ID="flashImageClickURL" runat="server" Field="Click Url" Item="<%# Container.DataItem %>" >
        <img id="htmlImage" runat="server" field="Image" src="<%# MediaManager.GetMediaUrl(((ImageField)((Item)Container.DataItem).Fields["Image"]).MediaItem) %>" />
    </sc:Link>
</ItemTemplate>
<FooterTemplate>
            </td>
        </tr>
    </table>
</FooterTemplate>

还要确保我<%@ Import Namespace="Sitecore.Resources.Media" %>在顶部添加了相关的命名空间。

但是VS2010给了我错误

无法解析符号“MediaItem”

有人可以指导我做错什么吗?

可能是括号放置不正确?

谢谢阅读。

4

3 回答 3

1

我认为您遇到的问题是ImageField没有正确解析到 Sitecore 图像字段。我将该代码粘贴到一个 aspx 页面中,我收到另一个错误,指出该字段无法转换为 ImageField。因此,我将 sitecore 名称空间添加到 ImageField 转换中,它可以根据需要正确地智能感知MediaItem

因此,将图像标签更改为此,它应该可以工作:

<img id="htmlImage" runat="server" field="Image" src="<%# MediaManager.GetMediaUrl(((Sitecore.Data.Fields.ImageField)((Item)Container.DataItem).Fields["Image"]).MediaItem) %>" />

就个人而言 - 我会使用 Sitecore Image 控件来渲染图像,如果你只想在后端代码中找到媒体 URL,上面的代码可以工作,但可以写得更具可读性:)

希望这可以帮助!

于 2013-05-31T14:46:55.333 回答
1

你绝对不需要在后面的代码中写任何东西。由于某种原因,您声明中的某个类似乎不是来自Sitecore命名空间之一。尝试使用带有命名空间的完整类名:

<img 
    id="htmlImage" 
    runat="server" 
    field="Image" 
    src="<%# Sitecore.Resources.Media.MediaManager.GetMediaUrl(((Sitecore.Data.Fields.ImageField)((Sitecore.Data.Items.Item)Container.DataItem).Fields["Image"]).MediaItem) %>"
    />
于 2013-05-30T17:03:38.920 回答
1

看起来您正在尝试从项目中的字段渲染图像,只需使用 FieldRender 控件并让 Sitecore 处理它。

<sc:FieldRenderer runat="server" FieldName="Image" Item="<%# (Item)Container.DataItem %>" />
于 2013-05-30T17:48:19.013 回答