Asp.net 在图像源属性中与GetMediaUrl一起使用时,MediaItem无法解析符号

Asp.net 在图像源属性中与GetMediaUrl一起使用时,MediaItem无法解析符号,asp.net,sitecore,repeater,sitecore6,Asp.net,Sitecore,Repeater,Sitecore6,我试图实现的是获取图像的完整路径,将它们分配给HTML图像控件的源属性。此图像放置在中继器控件中 代码如下: <asp:Repeater runat="server" ID="flashImagesRepeater" > <HeaderTemplate> <table> <tr id="bodyImagesTr" > <td> </HeaderTemplate> <Ite

我试图实现的是获取图像的完整路径,将它们分配给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>

" />

还确保在顶部添加了相关的名称空间

但是VS2010给了我一个错误

无法解析符号“MediaItem”

有人能告诉我我做错了什么吗

可能是支架放置不正确


感谢阅读。

您肯定不需要在代码隐藏中编写任何内容。出于某种原因,您语句中的一个类被视为不来自
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) %>"
    />
”
/>

您肯定不需要在代码背后写任何东西。出于某种原因,您语句中的一个类被认为不是来自
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) %>"
    />
”
/>

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

<sc:FieldRenderer runat="server" FieldName="Image" Item="<%# (Item)Container.DataItem %>" />

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

<sc:FieldRenderer runat="server" FieldName="Image" Item="<%# (Item)Container.DataItem %>" />

我认为您遇到的问题是,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图像控件来呈现图像,如果您只想在后端代码中找到媒体Url,上面的代码可以工作,但可以编写得更可读:)


希望这有帮助

我认为您遇到的问题是,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图像控件来呈现图像,如果您只想在后端代码中找到媒体Url,上面的代码可以工作,但可以编写得更可读:)



希望这会有所帮助!

MediaItem是Sitecore.Data.Items命名空间的成员,而不是Sitecore.Resources.Media也包含了它,
Sitecore.Data.Fields
命名空间如何?我认为它不相关。我没有它,所以我将它放在那里。但错误仍然存在,并且命名空间显示为灰色,表明它不存在g已使用。尝试使用FindControl(使用asp:image控件)绑定ItemDataBound中的映像src.MediaItem是Sitecore.Data.Items命名空间的成员,而不是Sitecore.Resources.Media。也包含了这些内容吗
Sitecore.Data.Fields
命名空间?不认为相关。我没有它,所以我将它放在了其中。但错误仍然存在,命名空间显示为灰色g发现它未被使用。请尝试使用FindControl(使用asp:image控件)绑定ItemDataBound中的映像src。它更干净,你可以正确地调试它。你不需要在后面使用代码,但如果你在我的团队工作,如果你提供代码,我会非常生气;-)@rudvanfalier完全同意:)Maras Musielak会尝试一下,看看我得到了什么。@rudvanfalier我已经开始采取不同的方法。Maras Musielak不起作用她:-)但谢谢你的帮助。@RuudvanFalier也谢谢你的帮助。你不需要使用代码隐藏,但如果你在我的团队工作,如果你提供代码,我会非常生气;-)@RuudvanFalier完全同意:)Maras Musielak会尝试一下,看看我得到了什么。@RuudvanFalier我已经开始采取不同的方法。MarasMusielak也不起作用。:-)但谢谢你的帮助。@RuudvanFalier也谢谢你的帮助。目标之一是获得图像中的完整路径。在这种情况下,从代码背后绑定并使用
。顺便说一句,html
元素不需要Sitecore
字段
属性:)我知道它不需要域d属性,这是我试图使其工作的字段渲染器的剩余部分。:-)为代码隐藏绑定欢呼。目标之一也是获得图像中的完整路径。在这种情况下,从代码隐藏绑定并使用
。顺便说一句,html
元素不需要Sitecore
字段
属性:)我知道哦,它不需要field属性,这是我试图让它工作的字段渲染器的剩余部分。:-)为绑定背后的代码干杯。