Можно ли предотвратить связывание элемента управления гиперссылкой asp.net, т.е. чтобы он отображался как метка, без фактической замены элемента управления меткой? Может быть, с помощью CSS или установки атрибута?
Я знаю, что пометка его как отключенного работает, но тогда он отображается по-другому (серый).
Чтобы прояснить мою точку зрения, у меня есть список имен пользователей в верхней части моей страницы, которые создаются динамически с использованием пользовательского элемента управления. В большинстве случаев эти имена связаны со страницей электронной почты. Однако, если пользователь был отключен, имя отображается серым цветом, но в настоящее время по-прежнему ссылается на страницу электронной почты. Я хочу, чтобы эти отключенные пользователи не ссылались.
Я знаю, что на самом деле мне следует заменить их меткой, но это не кажется таким элегантным, как простое удаление возможности связывания с использованием CSS (если это возможно). Они уже отображаются другим цветом, поэтому очевидно, что это пользователи с ограниченными возможностями. Мне просто нужно отключить ссылку.
Оба, но это уже не похоже на ссылку, это было сделано с помощью CSS. Мне просто нужно сделать его тоже не кликабельным.
Код, который генерирует эту ссылку, уже довольно сложен, и я не хочу добавлять еще больше сложности, добавляя вокруг него условный код, чтобы выводить его как метку вместо гиперссылки, если я могу этого избежать.





Если вы просто хотите изменить внешний вид ссылки, чтобы она не выглядела как ссылка, вы можете настроить CSS для своих тегов «a» так, чтобы не было подчеркивания:
a: link, visited, hover, active {
text-decoration: none;
}
Хотя я бы не советовал включать здесь "наведение", потому что другого способа узнать, что это ссылка, не будет.
В любом случае, я согласен с @pilif здесь, это похоже на катастрофу юзабилити, ожидающую своего часа.
Это должно работать:
onclick = "return false;"
в противном случае вы также можете изменить href на "#". Сделать его видимым как остальной текст - это css, например отображение стрелки вместо руки:
a.dummy {
cursor:default;
}
Мне любопытно, что именно вы с этим можете сделать. Зачем вообще использовать ссылку?
Это только для форматирования? В этом случае просто используйте <span> в HTML и используйте таблицы стилей, чтобы формат соответствовал ссылкам.
Или вы используете ссылку и прикрепляете onClick-Event, где вы «возвращаете false;» что заставит браузер не выполнять навигацию - если JS включен.
Но: разве это не сбивает с толку ваших пользователей? Зачем создавать то, что выглядит как ссылка, но ничего не делает?
Не могли бы вы предоставить более подробную информацию? У меня такое ощущение, что вы пытаетесь решить более серьезную проблему, у которой есть способ лучше, чем искалечить ссылку :-)
Я не хочу, чтобы он отображался как ссылка или работал как ссылка. Я знаю, что на самом деле это должен быть лейбл в данном конкретном случае. Однако задействованный код уже довольно сложен, и я не хочу добавлять дополнительную сложность с помощью оператора if, если, скажем, CSS может выполнить эту работу.
Если вы хотите остановить активацию ссылки, обычно используйте ссылку на «javascript: void (0);», то есть:
<a href="javascript:void(0);"> foo </a>
Я не думаю, что размещение javascript в href - это «правильный путь», хотя это работает.
Независимо от того, какие настройки вы сделаете, элемент управления «Гиперссылка» будет отображаться как тег «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. Просто дайте конкретное имя класса всем элементам управления HyperLink, URL-адреса которых вы хотите удалить, а затем примените следующий фрагмент JQuery в нижней части страницы:
$(document).ready(function() {
$('a.NoLink').removeAttr('href')
});
У всех элементов управления HyperLink с именем класса «NoLink» будут автоматически удалены все их URL-адреса, и ссылка будет выглядеть не более чем текстом.
Единственная строка JQuery может решить вашу проблему.
Спасибо за ввод, похоже, короткий ответ - «Нет, ты не можешь (ну, в любом случае, не красиво)», поэтому мне придется сделать это сложным способом и добавить условный код.
Если вы используете привязку данных в asp.net, обработайте событие привязки данных и просто не устанавливайте NavigateUrl, если эти пользователи отключены.
Вы пробовали просто нет установить свойство NavigateUrl? Если он не установлен, он может просто отображаться как диапазон.
Он отображается как тег A, даже если NavigateUrl не установлен.
.fusion-ссылка-обертка {указатель-события: нет; }
Другое решение - применить этот класс к вашей гиперссылке.
.avoid-clicks {
pointer-events: none;
}
Под запретом вы имеете в виду «не допустить, чтобы он отображался как ссылка» или полностью запретить его работу как ссылку?