2008-10-08 72 views
4

我有,將輸出一系列項目的轉發器:ASP.NET:如何將<A>或HtmlAnchor轉換爲靜態文本?

<asp:repeater ... runat="Server"> 
    <itemtemplate> 
     <a href="<%# GetItemLink(...) %>"><%# GetItemText %></a> 
    <itemtemplate> 
<asp:repeater> 

但有些項目會不會有相關的聯繫,所以我不希望他們點擊。我試圖使它runat=serverHtmlAnchor,並設置htmlAnchor.Disabled = true的項目是不應該實際上有一個鏈接 - 但他們仍然可以點擊(它只是使文本灰)

我知道我會怎麼做它過去的日子:

<% If IsLink Then %> 
    <A href="<% =GetItemLink%"> 
<% End If %> 
    <% =GetItemText %> 
<% If IsLink Then %> 
    </A> 
<% End If %> 

但這是混亂的代碼和HTML ASP的方式。 ASP.NET的方式是什麼?

回答

10

使用一個< asp:HyperLink>控件,如果沒有提供鏈接,它將正常顯示文本。


被修改以包括例如:

<asp:repeater ... runat="Server"> 
    <itemtemplate> 
     <asp:HyperLink ... runat="server" NavigateUrl="<%# GetItemLink(...) %>"> <%# GetItemText %></asp:HyperLink> 
    <itemtemplate> 
<asp:repeater> 

在上述示例中,定位標記將被渲染無論爲HTML,但如果NavigateUrl屬性是一個空字符串,也不會有href在我用過的所有瀏覽器都以類似於跨度的方式呈現文本(所以請注意< a>的自定義樣式)。