在eval中继器中的图像文件夹图片

时间:2013-11-21 19:13:03

标签: c# asp.net

当我使用照片没有任何文件夹<asp:Image ID="Image1" ImageUrl='<%# Eval("PresidentPhotoPath") %>' runat="server" />时,它可以正常工作。

然而,当我使用图像文件夹下的照片时,图片不显示,我只得到一个空白屏幕。这是我正在使用的代码:

<div class="wrapper">
    <asp:Repeater runat="server" ID="Repeater1">
        <ItemTemplate>
                <asp:Image ID="Image1" 
                        ImageUrl='"/Images" + <%# Eval("PresidentPhotoPath") %>' 
                        runat="server" />
        </ItemTemplate>
    </asp:Repeater>
</div>

2 个答案:

答案 0 :(得分:1)

我建议使用代码隐藏方法为你构建字符串,如下所示:

protected string BuildPath(string photoPath)
{
    return "Images/ + photoPath;
}
  

注意:考虑将这个命名比BuildPath更有用,因为这是非常通用的,只是选择了这个名称,因为没有更好的想法立即浮现在脑海中。

现在在你的标记中你可以调用方法,如下所示:

ImageUrl='<%# BuildPath(Eval("PresidentPhotoPath")) %>'

我推荐这种方法的原因如下:

  • 标记不包含任何复杂的逻辑,只是使用Eval()值的方法调用
  • 调试逻辑与嵌入式代码块相比更容易
  • 当逻辑嵌入到标记的绑定语法中时,您可以利用Visual Studio编译器的强大功能来捕获编译时的语法错误与运行时错误

答案 1 :(得分:1)

将asp:Image转换为以下代码:

<asp:Image ID="Image1" 
     ImageUrl='<%# string.Format("~/Images/{0}", Eval("PresidentPhotoPath")) %>' 
     runat="server" />