использование EPiImageResizer в повторителе

#episerver #episerver-6

#episerver #episerver-6

Вопрос:

Я не получаю EPiImage, чтобы показать мне изображение, когда я использую его в ретрансляторе.

Если я перемещаю регулятор размера за пределы ретранслятора, это работает как по волшебству..

Есть ли что-то особенное, о чем мне нужно подумать?

 <asp:Repeater ID="PageMenu" runat="server">
    <HeaderTemplate>
        <nav id="InlineSubNav">
            <ul>
    </HeaderTemplate>
    <ItemTemplate>
        <EPiImage:EPiImageResizer PropertyName="Image" Width="150" Height="150" Transformation="ScaleToFill" runat="server" />
        <EPiServer:Property PropertyName="MainIntro" runat="server" />
        <EPiServer:Property PropertyName="PageLink" runat="server" />
    </ItemTemplate>
    <FooterTemplate>
            </ul>
        </nav>
    </FooterTemplate>
</asp:Repeater>
  

Ответ №1:

Согласно исходному коду EPIImageResizer, метод визуализации выберет свойство с другой страницы, при условии, что установлена ссылка на страницу:

     //If PageLink is set use that page instead of the current page
    if (PageLink != PageReference.EmptyReference)
      PageDataToUse = DataFactory.Instance.GetPage(PageLink);

    if (PageDataToUse[PropertyName] != null)
    {
      ImageUrl = PageDataToUse[PropertyName].ToString();
  

Таким образом, если вы правильно задаете свойство PageLink, проблем возникнуть не должно.

Попробуйте использовать синтаксис привязки для заполнения свойства PageLink в ItemTemplate на повторителе, используя что-то вроде этого:

     PageLink="<%# ((PageData)Container.DataItem).PageLink %>"
  

В качестве альтернативы задайте значение в коде, подписавшись на событие ItemDataBound повторителя, извлеките элемент управления EPiImageResizer с помощью e.Item.метод FindControl и установка ссылки на страницу с использованием значения, полученного из e.Item.Элемент данных.Ссылка на страницу

Комментарии:

1. Это было исправлено в epiimage 2.5

Ответ №2:

Насколько я могу видеть из исходного кода EPiImage, это не будет работать / это не поддерживается. Вы могли бы попробовать установить свойство PageLink для каждого элемента.

Комментарии:

1. Я согласен, знает ли EPiImageResizer о контексте привязки данных? Если нет, вам нужно будет привязать ссылку на страницу.

2. Я попытался добавить ссылку на страницу, но затем мне не удалось преобразовать объект типа ‘System.Int32’ в тип ‘System. Строка’.

Ответ №3:

В EPiImage 2.5 была исправлена проблема с привязкой к данным.

указав атрибут propertyName и PageLink, теперь это работает

 <EPiImage:EPiImageResizer PropertyName="Image" PageLink="<%# Container.CurrentPage.PageLink %>" Width="150" Height="150" Transformation="ScaleToFill" runat="server" />