【问题标题】:ASP.NET Repeater questionASP.NET 中继器问题
【发布时间】:2011-04-08 21:56:33
【问题描述】:

我有一个中继器控件,在 ItemTemplate 下,我有图像控件。反正老了

如何以编程方式设置 ImageUrl?

反正我以前的html代码是这样的:

" alt="" /> 项目模板>

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

我有一个代码,但是 .. 它并没有真正起作用,所以在这里展示它是没有意义的。你们能帮帮我吗?我应该使用 ItemCreated 还是 ItemDataBound 事件?

【问题讨论】:

  • 在stackoverflow中提问很好,你可以立即得到回复和回答,不像在msdn论坛中。谢谢大家。

标签: asp.net repeater


【解决方案1】:

对于错误

服务器标签格式不正确

您应该删除代码中的多余空间!

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

【讨论】:

    【解决方案2】:

    在模板的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 服务器标签格式不正确。
    • 好的,我搞定了。但是你的代码有错误。最后不应该有分号:)但是谢谢乔尔!
    • @Nullstr1ng - 对此感到抱歉。我无法访问我的 IDE,我一直在 vb 和 c# 之间来回切换,所以我的 ;手指有点触发快乐。
    【解决方案3】:

    在您的 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

    【讨论】:

      【解决方案4】:
      <ItemTemplate>
          <asp:Image ImageUrl='<%# System.IO.File.Exists(Eval("ImageSourceProperty").ToString()) ? Eval("ImageSourceProperty").ToString() : TemporaryImagePath %>' runat="server" />
      </ItemTemplate>
      

      【讨论】:

      • 错误4 服务器标签格式不正确。
      【解决方案5】:

      项目数据绑定。可以通过当前项的findcontrol事件获取控件引用,然后查看图片是否存在。您可以使用 Server.MapPath("~/images/test.png") 获取文件路径,如果没有,则注入您自己的。

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

      HTH。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多