【问题标题】:Trying to embed a DataItem within an asp:Image control's ImageUrl property试图在 asp:Image 控件的 ImageUrl 属性中嵌入 DataItem
【发布时间】:2009-10-03 02:03:57
【问题描述】:

我在转发器中有以下图像控件。我试图让用户名在 ~/profilepics/ 和 .jpg 之间呈现,但我得到以下呈现的输出

/profilepics/%3C%25#DataBinder.Eval(Container.DataItem,%20%22usernameFrom%22)%20%25%3E.jpg

这是标记

<asp:Image ID="Image1" runat="server" ImageUrl='~/profilepics/<%#DataBinder.Eval(Container.DataItem, "username") %>.jpg' />

我也尝试过相同的方法,但使用双引号并得到相同的结果。

<asp:Image ID="Image1" runat="server" ImageUrl="~/profilepics/<%#DataBinder.Eval(Container.DataItem, "username") %>.jpg" />

【问题讨论】:

  • 我认为“嵌入式”标签在这种情况下被滥用了。该标签指的是“嵌入式系统”。
  • @clifford,我同意,标签已删除...
  • @clifford,Jakob,也同意,改为添加“后期评估”标签

标签: asp.net data-binding markup datarepeater late-bound-evaluation


【解决方案1】:

您不能在服务器控件中使用数据绑定语法。您是否尝试过使用普通的 img HTML 标签?

<img src='/profilepics/<%#Eval("username") %>.jpg' />

【讨论】:

  • @Jakob,src 的双引号将与 Eval 中的双引号冲突。否则它将起作用。我们也不能假设“/profilepics”位于站点的根目录。
【解决方案2】:

这种方式是行不通的。 Image WebControl 不会采用此类标记。 常用的方法是使用 ItemDataBound 事件将图像源分配给转发器项内的每个图像控件。

如果你想使用这些标记,不要使用 WebControl,试试这个:

<img src='<%ResolveClientUrl("~/profilepics")%>/<%#DataBinder.Eval(Container.DataItem, "username") %>.jpg' />

免责声明:我没有测试上面的确切代码,但这个概念应该有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    相关资源
    最近更新 更多