Using HtmlAnchor or ASP.NET HyperLink for anchor tag that navigates in-page named anchor

徘徊边缘 提交于 2019-11-27 17:43:22

问题


I am trying to render a simple hyperlink that links to a named anchor within the page, for example:

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

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

The problem is that when I use an ASP.NET control like asp:HyperLink or HtmlAnchor, the href="#namedAnchor" is rendered as href="controls/#namedAnchor" (where controls is the subdirectory where the user control containing the anchor is). Here is the code for the control, using two types of anchor controls, which both have the same problem:

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

The generated source looks like:

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

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

I really just want:

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

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

I am using the HtmlAnchor or HyperLink class because I want to make changes to other attributes in the code behind. I do not want to introduce a custom web control for this requirement, as the requirement I'm pursuing is not that important enough to justify abandoning the traditional ASP.NET link controls. It seems like I should be able to use the ASP.NET link controls to generate the desired link.


回答1:


Instead of using the NavigateUrl property, just use the href property

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



回答2:


To set the HREF property in codebehind:

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

This will give you:

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



回答3:


Set it as a custom property on the link:

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

This will give you:

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


来源:https://stackoverflow.com/questions/2595113/using-htmlanchor-or-asp-net-hyperlink-for-anchor-tag-that-navigates-in-page-name

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!