如何防止超链接链接
是否有可能阻止asp.net超链接控件链接,即使其显示为标签,而无需实际将控件替换为标签?也许使用CSS或者设置属性?
我知道将其标记为"禁用"是可行的,但是随后显示方式却不同(显示为灰色)。
为了阐明我的观点,我在页面顶部有一个用户名列表,这些用户名是使用用户控件动态构建的。大多数情况下,这些名称可链接到电子邮件页面。但是,如果已禁用该用户,则该名称将显示为灰色,但当前仍链接到电子邮件页面。我希望这些残疾用户不要链接。
我知道我确实应该用标签替换它们,但这似乎并不像使用CSS删除链接功能那样优雅(如果可能的话)。它们已经以不同的颜色显示,因此很明显它们是禁用用户。我只需要关闭链接。
解决方案
回答
如果我们只想修改链接的外观以使其看起来不像链接,则可以将" a"标签的CSS设置为不带有下划线:
a: link, visited, hover, active { text-decoration: none; }
尽管我建议不要在此处包括" hover",因为没有其他方法可以知道它是一个链接。
无论如何,我在这里同意@pilif,这看起来像是一场可用性灾难,正在等待发生。
回答
这应该工作:
onclick="return false;"
如果没有,我们也可以将href更改为"#"。使它显示为其余文本是CSS,例如显示箭头而不是手是:
a.dummy { cursor:default; }
回答
我很好奇你要完成什么。为什么要使用链接?
它仅用于格式化吗?在这种情况下,只需在HTML中使用<span>并使用样式表使格式与链接匹配。
或者,我们使用链接并在"返回假"的位置添加onClick-Event;如果启用了JS,浏览器将无法进行导航。
但是:这对用户来说不是很令人困惑吗?为什么要创建看起来像链接但什么都不做的东西?
我们能否提供更多详细信息?我有种感觉,我们正在尝试解决一个更大的问题,该问题要比削弱链接更为有效::)
回答
如果我们要停止激活链接,通常的方法是链接到" javascript:void(0);",即:
<a href="javascript:void(0);"> foo </a>
回答
无论我们进行什么设置,超链接控件都将呈现为" a" /" a"标签。我们可以自定义CSS类,以使链接看起来像普通标签。
另外,我们可以构建一个继承自System.Web.UI.WebControls.HyperLink的自定义控件,并覆盖Render方法
protected override void Render(HtmlTextWriter writer) { if (Enabled) base.Render(writer); else { writer.RenderBeginTag(HtmlTextWriterTag.Span); writer.Write(Text); writer.RenderEndTag(HtmlTextWriterTag.Span); } } }
可能有点过大,但可以满足要求。
另外,我发现在项目文件中包含一个基本的asp:CustomHyperlink asp:CustomButton类很有用。使在整个项目中定义自定义行为变得更加容易。
回答
这听起来像是JQuery的工作。只需为要删除URL的所有HyperLink控件指定特定的类名,然后将以下JQuery代码段应用于页面底部即可:
$(document).ready(function() { $('a.NoLink').removeAttr('href') });
所有名称为" NoLink"的HyperLink控件都将自动删除其所有URL,并且该链接看起来只不过是文本。
一行JQuery可以解决问题。
回答
感谢所有输入,简短的答案似乎是"不,我们不能(无论如何都不好)",因此,我将不得不采用困难的方式并添加条件代码。
回答
如果我们在asp.net中使用databind,请处理数据绑定事件,如果禁用了该用户,则不要设置NavigateUrl。
回答
我们是否尝试过不设置NavigateUrl属性?如果未设置,则可能只是作为跨度渲染。