使用 asp:ItemTemplate 时出现解析错误

Parse error when using asp:ItemTemplate

我正在尝试创建一个可点击的图像,当点击该图像时,它会变为动态 url。我已经尝试了几种方法,但似乎遗漏了一些东西。

<asp:TemplateField HeaderText="Copy">
    <asp:ItemTemplate>
        <a href="../PricingTool/PriceListCopy.aspx?PriceListID=<%# Eval("PriceListID") %>" runat="server" ID="lnkCopy" ><asp:Image runat="server" src="../../Images/plus.gif" /></a>
    </asp:ItemTemplate>
</asp:TemplateField>

以上代码导致解析错误(服务器标记格式不正确。)

<asp:TemplateField HeaderText="Copy">
    <asp:ItemTemplate>
        <asp:HyperLink runat="server" ID="lnkCopy" NavigateUrl="../PricingTool/PriceListCopy.aspx?PriceListID=<%# Eval("PriceListID") %>" ><asp:Image runat="server" src="../../Images/plus.gif" /></asp:HyperLink>
    </asp:ItemTemplate>
</asp:TemplateField>

上面的代码给了我同样的解析器错误。这两个错误分别发生在 asp:HyperLink 和 href 字段上。

谢谢。

您在第一个示例中的 href 属性值上嵌套双引号,在第二个示例中为您的 NavigateUrl 嵌套双引号。用单引号替换外部或内部双引号。

我认为这应该是没有 asp: 前缀的 <ItemTemplate>:

<asp:TemplateField HeaderText="Copy">
    <ItemTemplate>
        ...
    </ItemTemplate>
</asp:TemplateField>

这应该有效:-

<asp:TemplateField HeaderText="Copy">
   <ItemTemplate>
      <a href='<%# String.Format("../PricingTool/PriceListCopy.aspx?PriceListID={0}",
                            Eval("PriceListID")) %>' runat="server" id="lnkCopy">
     <asp:Image runat="server" ImageUrl="../../Images/plus.gif" /></a>
   </ItemTemplate>
</asp:TemplateField>

首先,您将双引号与单引号混合使用,因此一旦遇到 Eval 方法中存在的双引号就会抛出错误。

除此之外,由于您正在使用<asp:Image,无需再次包含HTML img 标签,您可以直接在ImageUrl 属性 中分配图像。