2010-04-07 18 views
16

que estoy tratando de hacer un hipervínculo simple que vincula a un anclaje con nombre dentro de la página, por ejemplo:HtmlAnchor o ASP.NET hiperenlace para la etiqueta de anclaje que navega en páginas nombrado anclaje

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

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

El problema es que cuando uso un control ASP.NET como asp:HyperLink o HtmlAnchor, el href="#namedAnchor" se representa como href="controls/#namedAnchor" (donde controls es el subdirectorio donde está el control de usuario que contiene el delimitador). Aquí está el código para el control, el uso de dos tipos de controles de anclaje, que ambos tienen el mismo problema:

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

La fuente generado será similar a:

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

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

Realmente sólo quiero:

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

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

Estoy usando la clase HtmlAnchor o HyperLink porque quiero hacer cambios en otros atributos en el código detrás. No deseo introducir un control web personalizado para este requisito, ya que el requisito que persigo no es lo suficientemente importante como para justificar el abandono de los controles de enlace ASP.NET tradicionales. Parece que debería ser capaz de usar los controles de enlace ASP.NET para generar el enlace deseado.

+0

duplicado posible de [control de usuario asp.net, consiguiendo determinación HtmlAnchor a href = "#"] (http://stackoverflow.com/questions/1489332/asp -net-user-control-getting-htmlanchor-resolve-to-href) – zzzzBov

Respuesta

26

En lugar de utilizar la propiedad NavigateUrl, sólo tiene que utilizar la propiedad href

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

Parece que eso funciona. Gracias. –

+0

Interesante. Gracias por esta solución. – Rushino

+0

No valida: El atributo 'href' no es un atributo válido del elemento 'HyperLink'. – cdonner

0

establecerlo como una propiedad personalizada en el enlace:

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

esto le dará:

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

Para establecer la propiedad HREF en código subyacente:

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

Esto le dará:

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

Esta es la solución correcta para hacerlo en código. (También funciona para la clase HtmlAnchor: configurar la propiedad HRef en HtmlAnchor también genera la "basura" adicional) – misteraidan

Cuestiones relacionadas