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

вы можете изменить свой код на этот

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

Обратите внимание, что вы должны удалить runat="server" для этого

Смежные вопросы