1

为什么第二行有效但第一行无效?我得到“服务器标签格式不正确”。我复制到第二行的 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

4 回答 4

1

在ImageUrl属性的值周围加上引号。

<asp:Image runat="server" 
           ImageUrl='~/Images/Avatar/Avatar.aspx?
              UserId=<%#DataBinder.Eval(Container.DataItem, "UserId")%>' />
于 2012-08-15T14:48:13.930 回答
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>
于 2012-08-15T15:43:58.037 回答
0

或者试试

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

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

于 2012-08-15T14:49:36.173 回答
0

尝试将您打印<%#DataBinder.Eval(Container.DataItem, "UserId")%>在标签上。Guid 的格式化方式可能与它在数据库中的样子不完全相同。如果我没记错的话,它可能在 Guid 周围有 {}。

于 2012-08-15T14:53:03.050 回答