首页 文章

ASP.NET Repeater问题

提问于
浏览
4

我有一个转发器控件,在ItemTemplate下,我有Image控件 . 无论如何旧

如何以编程方式设置ImageUrl?

无论如何,我有的旧HTML代码是这样的:

<ItemTemplate>
   <img src="<%# Eval("ImageSource") %>" alt="" />
</ItemTemplate>

但我想检查图像是否存在于目录中,然后我可以设置临时图像 .

我有一个代码,但它不是真的有效,所以没有在这里显示它的感觉 . 你们能帮助我吗?我应该使用ItemCreated或ItemDataBound事件吗?

5 回答

  • 1

    在模板的xml端,您需要直接调用方法 .

    <asp:Image runat="server" ID="myImg" ImageUrl='<%# MyImageUrlFunction(Eval("DataFieldName").ToString()); %>' />
    

    您需要在公开定义的代码中使用相应的方法:

    public string MyImageUrlFunction(string field) 
    {
        // put some logic here to determine url
        return imageUrl;
    }
    
  • 4

    ItemDataBound 中,执行以下操作:

    protected void rpt_ItemDataBound(object sender, RepeaterEventArgs e)
    {
        HtmlImage img = (HtmlImage)e.Item.FindControl("img");
    
        string imageUrl = (string)DataBinder.Eval(e.Item.DataItem, "ImageSource");
        if (File.Exists(imageUrl))
            img.Src = imageUrl;
    }
    

    那是 System.Web.UI.HtmlControls.HtmlImageSystem.Web.UI.DataBinderSystem.IO.File .

  • 0

    的ItemDataBound . 您可以通过当前项的findcontrol事件获取控件引用,然后检查图像是否存在 . 您可以使用Server.MapPath(“〜/ images / test.png”)获取文件路径,如果没有,请注入您自己的文件路径 .

    您还可以使用客户端标记可以调用的公共方法,传入URL,并提供默认值(如果不存在) .

    HTH .

  • 0
    <ItemTemplate>
        <asp:Image ImageUrl='<%# System.IO.File.Exists(Eval("ImageSourceProperty").ToString()) ? Eval("ImageSourceProperty").ToString() : TemporaryImagePath %>' runat="server" />
    </ItemTemplate>
    
  • 3

    为错误

    服务器标签格式不正确

    您应该删除代码中的额外空间!

    <%# System.IO.File......%>
    should be <%#System.IO.File......%>
    

相关问题