asp:图像 - 转发器中的标签

时间:2012-08-15 14:45:12

标签: asp.net image repeater

为什么第二行有效但不是第一行? 我得到“服务器标签形成不好”。 我已经复制到第二行的Guid直接来自数据库。

< asp:Image runat="server" ImageUrl="~/Images/Avatar/Avatar.aspx?UserId=<%#DataBinder.Eval(Container.DataItem, "UserId")%>" />

< asp:Image runat="server" ImageUrl="~/Images/Avatar/Avatar.aspx?UserId=22AA736E-BD1B-4623-8E76-4769051F2E60" />

4 个答案:

答案 0 :(得分:1)

单个引用放在 ImageUrl 属性的值附近。

<asp:Image runat="server" 
           ImageUrl='~/Images/Avatar/Avatar.aspx?
              UserId=<%#DataBinder.Eval(Container.DataItem, "UserId")%>' />

答案 1 :(得分:1)

另一种方法是使用String.Format(...)

<asp:TemplateField HeaderText="Avatar" SortExpression="LastName, FirstName">
    <ItemTemplate>
        <asp:Image ID="Image1" runat="server" ImageUrl='<%# String.Format("~/Images/Avatar/Avatar.aspx?UserID={0}", Eval("UserID").ToString()) %>' />
    </ItemTemplate>
</asp:TemplateField>

答案 2 :(得分:0)

或尝试

< asp:Image runat="server" ImageUrl='<%#"~/Images/Avatar/Avatar.aspx?UserId=" + DataBinder.Eval(Container.DataItem, "UserId")%>' />

你的问题是双引号。您的开场报价是双引号,因此被“UserID”的开头报价关闭。 无论如何,在数据绑定时也应该始终使用单引号。

答案 3 :(得分:0)

尝试在标签中打印<%#DataBinder.Eval(Container.DataItem, "UserId")%>。格式化Guid的方式可能与数据库中的样式不完全相同。如果我记得很清楚,它可能会在Guid周围{}。{/ p>