Использование HtmlAnchor или ASP.NET HyperLink для тега привязки, который перемещается на странице с именем anchor - PullRequest
17 голосов
/ 07 апреля 2010

Я пытаюсь отобразить простую гиперссылку, которая ссылается на именованную привязку на странице, например:

<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 для создания желаемой ссылки.

Ответы [ 3 ]

26 голосов
/ 07 апреля 2010

Вместо использования свойства NavigateUrl, просто используйте свойство href

<asp:HyperLink href="#namedAnchor" runat="server">HyperLink</asp:HyperLink>
7 голосов
/ 15 мая 2012

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

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

Это даст вам:

<a href="#111">blah blah</a>
1 голос
/ 26 января 2011

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

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

Это даст вам:

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