0

私が達成しようとしているのは、画像の完全なパスを取得して、それらを HTML 画像コントロールの source 属性に割り当てることです。この画像は Repeater Control 内に配置されます。

ここにコード:

<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 としてキャストできないという別のエラーが発生しました。そのため、サイトコアの名前空間を 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

アイテムのフィールドから画像をレンダリングしようとしているようです。FieldRender コントロールを使用して、Sitecore に処理させてください。

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