Я начинаю работу с Sitecore, и мне трудно получить изображения, хранящиеся в TreeList, для правильного отображения в ретрансляторе aspnet.Загрузка нескольких изображений из твинера в sitecore
В разметке у меня есть ретранслятор, предназначенный для отображения изображений с помощью элемента sc: Image.
<asp:Repeater ID="rptLogos" runat="server" OnItemDataBound="rptLogos_ItemDataBound" >
<ItemTemplate>
<a title="Logo" href="#">
<sc:Image runat="server" ID="img" field="image logos" />
</a>
</ItemTemplate>
</asp:Repeater>
В коде позади, я извлечение MultilistField и настройка источника данных ретранслятора с TargetIDs как так
Sitecore.Data.Fields.MultilistField mlLogos = Footer.Fields["Logos"];
if (mlPartnerLogos != null)
{
rptLogos.DataSource = mlLogos.TargetIDs;
rptLogos.DataBind();
}
В случае ItemDataBound я тогда превращающий каждый идентификатор элемента, захват управления изображением из ретранслятора и установка поля Item для элемента Sitecore.Web.UI.WebControls.Image.
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
ID targetId = e.Item.DataItem as ID;
if (!targetId.IsNull)
{
MediaItem targetItem = Sitecore.Context.Database.GetItem(targetId);
if (targetItem != null)
{
var phImage = e.Item.FindControl("img") as Sitecore.Web.UI.WebControls.Image;
phImage.Item = targetItem;
}
}
}
Если я отлаживаю код, он, кажется, извлекает данные без каких-либо проблем. Однако в разметке вместо перевода в поле я просто получаю пустой текст.
То же «идея» захвата элемента Sitecore и присвоения его элементу Sitecore.Web.UI.WebControls.Image отлично работает в другом месте, где у меня есть один элемент, хотя я заметил, что если я изменю sc : Поле тега изображения ничем, кроме имени в нижнем регистре имени поля в sitecore, не будет работать. Если это проблема, я немного смущен тем, что, однако, должно быть имя поля для изображений в TreeList.
У меня также странное чувство, что способ, которым я беру предметы и пытаюсь их назначить, может быть слишком «раздутым», и может быть более простой способ сделать это.
Любая помощь была бы принята с благодарностью. Спасибо.
Редактировать:
Фиксированный как это было предложено заменить подкожно: изображение с осины: изображения и изменения ItemDataBound к
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
ID targetId = e.Item.DataItem as ID;
if (!targetId.IsNull)
{
MediaItem targetItem = Sitecore.Context.Database.GetItem(targetId);
if (targetItem != null)
{
var phImage = e.Item.FindControl("img") as System.Web.UI.WebControls.Image;
phImage.ImageUrl = Sitecore.Resources.Media.MediaManager.GetMediaUrl(targetItem);
}
}
}