2010-04-07 2 views
16

Я пытаюсь сделать простой гиперссылки, ссылки на именованный якорь в пределах страницы, например:Использования HtmlAnchor или ASP.NET гиперссылки для тега привязки, которые плавают в странице с именем якорной

<a href="#namedAnchor">scroll to down</a> 

<a name="namedAnchor">down</a> 

Проблемы заключается в том, что при использовании элемента управления ASP.NET, такого как asp:HyperLink или HtmlAnchor, href="#namedAnchor" отображается как href="controls/#namedAnchor" (где controls - это подкаталог, в котором пользовательский элемент управления содержит якорь). Вот код для управления, используя два типа управления якорным, которые оба имеют ту же проблему:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Test.ascx.cs" Inherits="TestWebApplication1.controls.Test" %> 

<a href="#namedAnchor" runat="server">HtmlAnchor</a> 

<asp:HyperLink NavigateUrl="#namedAnchor" runat="server">HyperLink</asp:HyperLink> 

Сгенерированный источник выглядит:

<a href="controls/#namedAnchor">HtmlAnchor</a> 

<a href="controls/#namedAnchor">HyperLink</a> 

Я просто хочу:

<a href="#namedAnchor">HtmlAnchor</a> 

<a href="#namedAnchor">HyperLink</a> 

Я использую класс HtmlAnchor или HyperLink, потому что я хочу внести изменения в другие атрибуты в коде позади. Я не хочу вводить пользовательский веб-элемент управления для этого требования, поскольку требование, которое я преследую, не настолько важно, чтобы оправдать отказ от традиционных элементов управления ASP.NET. Кажется, что я должен использовать элементы управления ASP.NET для генерации желаемой ссылки.

+0

Возможный дубликат [пользовательский элемент управления ASP.NET, получая htmlAnchor решимостью HREF = "#"] (http://stackoverflow.com/questions/1489332/asp -net-user-control-getting-htmlanchor-resolve-to-href) – zzzzBov

ответ

26

Вместо того, чтобы использовать свойство NavigateURL, просто использовать HREF свойству

<asp:HyperLink href="#namedAnchor" runat="server">HyperLink</asp:HyperLink> 
+0

Похоже, что это работает. Благодарю. –

+0

Интересно. Спасибо за это решение. – Rushino

+0

Не проверяет: Атрибут 'href' не является допустимым атрибутом элемента 'HyperLink'. – cdonner

0

установить его в качестве пользовательского свойства по ссылке:

 HyperLink link = new HyperLink(); 
     link.Attributes.Add("name", doc.DocumentID.ToString()); 
     link.Text = doc.DocumentNumber; 

Это даст вам:

<a name="111">blah blah</a> 
6

Чтобы установить свойство HREF в код:

HyperLink link = new HyperLink(); 
link.Attributes.Add("href", "#" + doc.DocumentID.ToString()); 
link.Text = doc.DocumentNumber; 

Это даст вам:

<a href="#111">blah blah</a> 
+0

Это правильное решение для этого в коде. (Также работает для класса HtmlAnchor - настройка свойства HRef на HtmlAnchor также генерирует дополнительное «дерьмо») – misteraidan

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