我有一个转发器,它将输出一系列项目:
<asp:repeater ... runat="Server">
<itemtemplate>
<a href="<%# GetItemLink(...) %>"><%# GetItemText %></a>
<itemtemplate>
<asp:repeater>
但有些项目没有关联的链接,所以我不希望它们是可点击的。我尝试将其设为runat=server
HtmlAnchor
,并设置项目的htmlAnchor.Disabled = true
实际上不应该有链接 - 但仍然可以点击它们(它只会使文本变为灰色)< / p>
我知道在过去的日子里我是如何做到的:
<% If IsLink Then %>
<A href="<% =GetItemLink%">
<% End If %>
<% =GetItemText %>
<% If IsLink Then %>
</A>
<% End If %>
但那是凌乱的混合代码和HTML ASP方式。什么是ASP.NET方式?
答案 0 :(得分:10)
使用&lt; asp:HyperLink&gt; control,如果没有提供链接,则正常显示文本。
编辑包含示例:
<asp:repeater ... runat="Server">
<itemtemplate>
<asp:HyperLink ... runat="server" NavigateUrl="<%# GetItemLink(...) %>"> <%# GetItemText %></asp:HyperLink>
<itemtemplate>
<asp:repeater>
在上面的示例中,无论如何,锚标记都将呈现为html,但如果NavigateUrl属性为空字符串,则根本不会有href
,我曾经使用的每个浏览器都会呈现文本以类似于跨度的方式(因此请注意&lt; a&gt;的自定义样式)。