我有一个可以输出一系列项目的转发器:
<asp:repeater ... runat="Server">
<itemtemplate>
<a href="<%# GetItemLink(...) %>"><%# GetItemText %></a>
<itemtemplate>
<asp:repeater>
但是有些项目没有关联链接,所以我不希望它们可以点击。我尝试将其设为 runat=server
HtmlAnchor
,并为项目设置 htmlAnchor.Disabled = true
实际上不应该有链接 -但它们仍然可以被点击(它只是使文本变灰)
我知道在过去我会怎么做:
<% If IsLink Then %>
<A href="<% =GetItemLink%">
<% End If %>
<% =GetItemText %>
<% If IsLink Then %>
</A>
<% End If %>
但这是困惑的混合代码和 html ASP 方式。什么是 ASP.NET 方式?
最佳答案
使用
编辑以包含示例:
<asp:repeater ... runat="Server">
<itemtemplate>
<asp:HyperLink ... runat="server" NavigateUrl="<%# GetItemLink(...) %>"> <%# GetItemText %></asp:HyperLink>
<itemtemplate>
<asp:repeater>
在上面的例子中,无论如何 anchor 标签都会被渲染成html,但是如果NavigateUrl属性是一个空字符串,那么根本就没有href
,我用过的所有浏览器以类似于 span 的方式呈现文本(因此请注意 上的自定义样式)。
关于ASP.NET:如何将 <A> 或 HtmlAnchor 转换为静态文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/184570/