2012-01-24 33 views
0
   <asp:Repeater ID="rptrCategories" runat="server"> 
        <ItemTemplate> 
         <li> 
         <a href='~/category/<%# Eval("NormalizedProductCategory") %>' runat="server"><%# Eval("ProductCategoryName")%></a></li>     
        </ItemTemplate> 
       </asp:Repeater> 

当href部分由服务器呈现时,它显示在客户端部分中,如下所示。第一个评价部分Eval不会呈现在href标记中

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

这里有什么不对吗?

回答

3

你可以做到以下几点:

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

这怎么可能是答案。这甚至工作吗?我认为代码块在runat =“server”控件上不起作用。还是仅限于页面头部的代码块? – Rickjaah

+2

看看http://forums.asp.net/t/1302692.aspx/1。这是行不通的 – Steve

+1

它完美地工作 – Alex

1

代码掘金并不总是在RUNAT = “服务器” 的控制工作。

如果你想这样做,去掉RUNAT =“服务器”,或通过使用其移动所有代码的代码隐藏的ASP.NET对口

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

后面的代码中的ItemDataBound:

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

您可以更改您的代码,你必须删除012这个

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

公告为此