NavigateUrl = "#" становится href= "SubFolder/#"?
Это не совсем последняя теорема Ферма, но она продолжает возвращаться, чтобы раздражать меня, как неоплаченный телефонный счет из колледжа. Иногда я хочу создать HyperLink
, который не вызывает обратную передачу, поэтому я хочу, чтобы целевой URL был #. Когда разметка происходит из UserControl во вложенной папке,
/
|- Home.aspx (uses UC.ascx)
|- Sub
|- UC.ascx
URL-адрес переписывается с относительным путем, например.
<asp:HyperLink runat="server" NavigateUrl="#" >Click Me!</asp:HyperLink>
становится
<a href="SubFolder/#">Click Me!</a>
Что, к сожалению, неправильно. Очевидно, я могу обойти это, не используя серверный контроль, но он кажется глупым. Можно ли этого избежать?
Здесь я добавлю событие click с jQuery или в код, и я никогда не хочу, чтобы он вызывал обратную передачу, но я хочу, чтобы это была гиперссылка по причинам CSS.
Ответы
Ответ 1
простой способ:
<asp:HyperLink ID="HyperLink1"
navigateUrl="#"
onclick="javascript:return false;"
runat="server">HyperLink</asp:HyperLink>
или
<asp:HyperLink ID="HyperLink1"
href="#"
runat="server">HyperLink</asp:HyperLink>
или jquery добавьте класс к ссылке, в которой вы не хотите иметь обратную передачу (nopostback):
$("a.nopostback").bind('click', function () {
return false;
})
Ответ 2
Вы можете установить атрибуты для элементов на стороне сервера.
<asp:HyperLink ID="HyperLink1" runat="server" Text="Click me"
href="#" style="color: red;" />
В коде, а также, используя свойство Attributes
HyperLink1.Attributes
Ответ 3
На самом деле, добавив элемент управления на страницу без, атрибут href/NavigateUrl предлагает максимальную гибкость.
<asp:HyperLink ID="HyperLink1" runat="server"/>
Затем присвоение атрибута href в вашем коде выглядит как ответ Бруно:
HyperLink1.Attributes.Add("href","{your-value-here}");
Хотя, Бруно и Каспар отвечают на работу, они ломаются в определенных контекстах. Например, предположим, что ваш элемент управления HyperLink вложен в ретранслятор. Если вы затем хотели условно установить атрибут href на фактический URL или "#", эти подходы не будут работать. "#" Будет отображаться каждый раз.