2016-01-13 3 views
0

Я видел javascript:void(0) метод, используемый на <a> тегах в HTML, чтобы скрыть целевой URL гиперссылки. Теперь я хочу сделать то же самое на <asp:HyperLink>, что мне делать?Скрыть URL-адрес, когда наведите курсор мыши на asp: HyperLink

Я делаю ASP.NET и вот разметка:

<asp:HyperLink runat="server" ID="hl1">Blah blah blah</asp:HyperLink> 

В коде я указал NavigateUrl для hl1 использованием HttpUtility.UrlDecode метода.


Я попытался hl1.Attributes[ HREF ]="javascript:void(0)"; в coebehind, не работает. Не удается открыть NavigateUrl.

+0

Вы пытались создать метод, который запускается вашим управлением asp: hyperlink? Почему вы не хотите, чтобы пользователь видел URL? Вид shady ... –

+0

Я пытаюсь создать функцию JavaScript для запуска ссылки. –

+0

Вы хотите скрыть URL-адрес, который отображается внизу окна браузера? – Sunil

ответ

1

Вам необходимо сохранить URL-адрес, на который вы хотите перейти в скрытое поле, и просто установить NavigateUrl = "#" в разметке, как показано ниже. Таким образом, когда курсор пользователя наводится на ссылку, фактический URL-адрес навигации никогда не будет отображаться внизу браузера.

Затем присоедините обработчик события click на стороне клиента для гиперссылки, которую вы используете, только установив атрибут гиперссылки onclick на функцию JavaScript, называемую navigate. Фактическое перенаправление на новую страницу выполняется с помощью этой функции navigate.

В этой ситуации вы увидите только URL-адрес текущей страницы с #. Например, если ваш текущий URL-адрес страницы http://localhost/mysite/view.aspx, то он покажет http://localhost/mysite/view.aspx# внизу браузера.

Markup нужен

<asp:HyperLink runat="server" ID="hl" NavigateUrl="#" 
      onclick="navigate();">Some Text</asp:HyperLink> 
<asp:HiddenField ID="hdnURL" runat="server" Value="http://www.microsoft.com" /> 

JavaScript необходим

<script type="text/javascript"> 
     function navigate() { 
      window.location.href = document.getElementById("<%=hdnURL.ClientID%>").value; 
     } 
</script> 

Другой подход, который вы можете использовать, если необходимо установить NavigateURL для гиперссылки в код-за, как показано ниже , В этом подходе вам нужно удалить NavigateURL до того, как контент отобразит и сохранит его в глобальной переменной с именем linkUrl. Событие, которое срабатывает перед рендерингом содержимого, равно pageLoad, и мы будем использовать это событие для этого взлома.

Глобальная переменная в JavaScript всегда должна быть объявлена ​​вне всех методов.

Затем при нажатии на гиперссылку мы можем получить значение из глобальной переменной linkUrl и перенаправить пользователя в это место.

Примечание. Сохраняйте разметку гиперссылки так же, как при первом подходе. Но удалите скрытое поле из этой разметки.

<script type="text/javascript"> 
    function navigate(event) { 
     window.location.href = linkURL; 
    } 
    var linkUrl = null; 
    function pageLoad() { 
     var link = document.getElementById("<%=hl.ClientID%>"); 
     linkURL = link.getAttribute("href"); 
     link.setAttribute("href","#"); 
    } 
</script> 
+0

Я дам вам это для моей будущей ссылки. Спасибо. Но мне действительно нужно назначить 'NavigateUrl' в C# codebehind. –

+0

Если вы назначаете NavigateURL в коде позади, вы получите «' url = "некоторый url" для ссылки, а затем этот URL-адрес появится внизу при наведении указателя мыши на ссылку. Поэтому необходимо вместо этого установить значение скрытого поля с URL, а не NavigateURL. – Sunil

+0

Существует хак, который вы можете сделать, если вы должны установить NavigateURL в коде, но вы хотите его взломать? Если вы хотите этот хак, я могу опубликовать его также. – Sunil

Смежные вопросы