2012-01-24 165 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> 

公告爲此