Eval不会在href标记中呈现

时间:2012-01-24 08:55:25

标签: .net

                <asp:Repeater ID="rptrCategories" runat="server">
                    <ItemTemplate>
                         <li>
                         <a href='~/category/<%# Eval("NormalizedProductCategory") %>' runat="server"><%# Eval("ProductCategoryName")%></a></li>                   
                    </ItemTemplate>
                </asp:Repeater>

当href部件由服务器呈现时,它在客户端部分中显示如下所示。第一个评估部分

<a href="../../category/%3C%25#%20Eval(%22NormalizedProductCategory%22)%20%25%3E">Shoes</a>

这里有什么问题?

3 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

<asp:HyperLink ID="HyperLink" runat=server NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "NormalizedProductCategory", "~/category/{0}") %>'>Name</asp:HyperLink>

答案 1 :(得分:1)

代码块并不总是在runat =“server”控件中工作。

如果你想这样做,删除runat =“server”或者使用它的ASP.NET对应代码将所有代码移到代码隐藏

<asp:HyperLink ID="HyperLink" runat=server />

ItemDataBound中的代码:

HyperLink.NavigateUrl = this.ResolveUrl("~/category/" + dataItem.NormalizedProductCategory);

答案 2 :(得分:1)

您可以将代码更改为此

<a id="A1" href='<%= ResolveClientUrl("~") %>category/<%#Eval("NormalizedProductCategory") %>'><%# Eval("ProductCategoryName")%></a>  

请注意,您必须删除此{/ p>的runat="server"