2010-04-07 4 views
16

benannten Anker in-Seite navigiert Ich versuche, einen einfachen Hyperlink zu machen, die zum Beispiel innerhalb der Seite zu einem benannten Anker verbindet,:Mit Htmlanchor oder ASP.NET HyperLink für Anker-Tag, das

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

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

Das Problem Wenn ich ein ASP.NET-Steuerelement wie asp:HyperLink oder HtmlAnchor verwende, wird href="#namedAnchor" als href="controls/#namedAnchor" gerendert (wobei controls das Unterverzeichnis ist, in dem sich das Benutzersteuerelement befindet, das den Anker enthält). Hier ist der Code für die Steuerung, mit zwei Arten von Ankern Kontrollen, die beide das gleiche Problem haben:

<%@ 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> 

Die erzeugte Quelle wie folgt aussieht:

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

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

ich wirklich nur wollen:

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

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

Ich verwende die HtmlAnchor oder HyperLink Klasse, weil ich Änderungen an anderen Attributen im Code hinter machen möchte. Ich möchte kein benutzerdefiniertes Websteuerelement für diese Anforderung einführen, da die Anforderung, die ich verfolge, nicht so wichtig ist, dass die traditionellen ASP.NET-Linksteuerelemente aufgegeben werden könnten. Es scheint, dass ich in der Lage sein sollte, die ASP.NET-Linksteuerelemente zu verwenden, um den gewünschten Link zu generieren.

+0

Mögliche Duplikat [asp.net Benutzersteuerung, immer Htmlanchor Entschlossenheit href = "#"] (http://stackoverflow.com/questions/1489332/asp -net-user-control-getting-htmlanchor-resolve-to-href) – zzzzBov

Antwort

26

Statt die NavigateUrl Eigenschaft verwenden, benutzen Sie einfach die Eigenschaft href

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

Es sieht so aus. Vielen Dank. –

+0

Interessant. Danke für diese Lösung. – Rushino

+0

Validiert nicht: Das Attribut 'href' ist kein gültiges Attribut des Elements 'HyperLink'. – cdonner

0

Set es als eine benutzerdefinierte Eigenschaft auf den Link:

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

Dies gibt Ihnen:

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

So legen Sie die HREF-Eigenschaft in Codebehind fest:

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

Dies gibt Ihnen:

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

Dies ist die richtige Lösung, um es in Code zu tun. (Funktioniert auch für die HtmlAnchor-Klasse - das Setzen der HRef-Eigenschaft auf HtmlAnchor erzeugt auch den zusätzlichen "Mist") – misteraidan

Verwandte Themen