使用asp:ItemTemplate时解析错误

时间:2015-01-02 15:05:28

标签: c# asp.net gridview itemtemplate

我正在尝试创建一个可点击的图片,单击该图片会转到动态网址。我尝试了几种方法,但似乎缺少了一些东西。

<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>

上面的代码导致Parse错误(服务器标签格式不正确。)

<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>

上面的代码给出了相同的Parser错误。这两个错误分别出现在asp:HyperLink和href字段中。

感谢。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

这应该有效: -

<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属性中分配图像。