是否可以防止asp.net超链接控件链接,即使其显示为标签,而不必实际用标签替换控件?也许使用CSS或设置属性?
我知道将其标记为已禁用可以正常工作,但之后会以不同方式显示(灰显)。
为了澄清我的观点,我在页面顶部有一个用户名列表,这些用户名是使用用户控件动态构建的。大多数情况下,这些名称可链接到电子邮件页面。但是,如果用户已被禁用,则名称将以灰色显示,但目前仍指向电子邮件页面。我希望这些禁用的用户不要链接。
我知道我真的应该用标签取代它们,但这似乎并不像使用CSS说明(如果可能的话)删除链接能力那么优雅。它们已经以不同的颜色显示,因此很明显它们是禁用的用户。我只需要关闭链接。
答案 0 :(得分:6)
这听起来像是JQuery的工作。只需为要删除URL的所有HyperLink控件指定一个特定的类名,然后将以下JQuery代码段应用到页面底部:
$(document).ready(function() {
$('a.NoLink').removeAttr('href')
});
所有名称为“NoLink”的HyperLink控件都会自动删除所有网址,链接似乎只是文字。
单行JQuery可以解决您的问题。
答案 1 :(得分:4)
我很好奇你用它完成了什么。为什么要使用链接?
仅用于格式化吗?在这种情况下,只需使用< span>在HTML中并使用样式表使格式与链接匹配。
或者您使用该链接并附加onClick-Event,其中“返回false”;这将使浏览器不进行导航 - 如果启用了JS。
但是:对您的用户来说,这不是很令人困惑吗?为什么创建看起来像链接但什么也不做的东西?
您能提供更多详情吗?我有这种感觉,你正试图解决一个更大的问题,它有一个更好的解决方案,而不是削弱一个链接: - )
答案 2 :(得分:3)
无论您采取何种设置,超链接控件都将呈现为“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类是有用的。使整个项目中的自定义行为更容易定义。
答案 3 :(得分:2)
如果您只想修改链接的外观以免看起来像链接,可以将“a”标记的CSS设置为没有下划线:
a: link, visited, hover, active {
text-decoration: none;
}
虽然我建议不要在这里加入“悬停”,因为没有其他方法可以知道这是一个链接。
无论如何,我同意@pilif在这里,这看起来像是一个等待发生的可用性灾难。
答案 4 :(得分:2)
这应该有效:
onclick="return false;"
如果没有,你也可以将href改为“#”。使其显示为文本的其余部分是css,例如显示箭头而不是手是:
a.dummy {
cursor:default;
}
答案 5 :(得分:2)
如果您要停止激活链接,通常的方法是链接到“javascript:void(0);”,即:
< a href =“javascript:void(0);”> foo< / a>
答案 6 :(得分:2)
感谢所有的输入,看起来简短的回答是'不,你不能(好不好),所以我必须以艰难的方式去做并添加条件代码。
答案 7 :(得分:0)
如果您在asp.net中使用数据绑定处理数据绑定事件,并且如果禁用该用户,则不要设置NavigateUrl。
答案 8 :(得分:0)
您是否尝试过不设置NavigateUrl属性?如果未设置,则可以将其渲染为跨度。
答案 9 :(得分:0)
.fusion-link-wrapper {pointer-events:none; }
答案 10 :(得分:0)
另一种解决方案是在您的超链接上应用此类。
.avoid-clicks {
pointer-events: none;
}