использование EPiImageResizer в репитере - PullRequest
0 голосов
/ 24 мая 2011

Я не получаю 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>

Ответы [ 3 ]

1 голос
/ 31 августа 2011

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

    //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 и установите PageLink, используя значение, полученное из e.Item.DataItem.PageLink

1 голос
/ 02 сентября 2011

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

, указав атрибуты PropertyName и PageLink, теперь он работает

<EPiImage:EPiImageResizer PropertyName="Image" PageLink="<%# Container.CurrentPage.PageLink %>" Width="150" Height="150" Transformation="ScaleToFill" runat="server" />
1 голос
/ 24 мая 2011

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

...