2012-01-24 7 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部分がサーバによってレンダリングされると、クライアント部分に以下のように表示されます。最初の評価部分評価が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 =「server」を削除するか、それを使用してコードビハインドにすべてのコードを移動するには、ItemDataBound内

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

コードの背後にあるASP.NETの対応だ:

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

あなたは012を削除する必要があり、この

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

Noticeをあなたのコードを変更することができますこのための

関連する問題