在Repeater中使用EPiImageResizer

时间:2011-05-24 07:35:25

标签: episerver episerver-6

当我在转发器中使用它时,我没有让EPiImage向我显示图像。

如果我将调整器移到Repeater之外,它就像一个魅力......

我需要考虑一些特别的事情吗?

<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 个答案:

答案 0 :(得分:1)

从EPiImage的源代码可以看出,它不起作用/它不受支持。 您可以尝试为每个项目设置PageLink属性。

答案 1 :(得分:1)

根据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属性,那么应该没有问题。

尝试使用绑定语法在转发器的ItemTemplate中填充PageLink属性,使用如下内容:

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

或者通过订阅转发器的ItemDataBound事件来设置代码中的值,使用e.Item.FindControl方法检索EPiImageResizer控件并使用从e.Item.DataItem.PageLink

答案 2 :(得分:1)

在EPiImage 2.5中,数据绑定的问题已得到解决。

通过指定PropertyName和PageLink属性,它现在可以正常工作

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