2012-08-15 35 views
1

为什么第二行工作,但不是第一行? 我得到“服务器标签结构不正确”。 而我已经复制到第二行的Guid直接来自数据库。asp:中继器中的图像 - 标记

< 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

或者尝试

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

你的问题是双引号。你的开盘报价是一个双引号,因此被“UserID”的开盘报价关闭。 无论如何你也应该总是使用单引号。

1

引号周围的ImageUrl属性的值。

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

尝试在标签中打印<%#DataBinder.Eval(Container.DataItem, "UserId")%>。 Guid格式化的方式可能不完全像数据库中的样子。如果我正确地记住,它可能在Guid周围。

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>