为什么第二行有效但不是第一行? 我得到“服务器标签形成不好”。 我已经复制到第二行的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" />
答案 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>