使用HtmlAnchor或ASP.NETHyperLink作为在页内导航名为anchor的锚标记

wgmfuz8q  于 2023-10-21  发布在  .NET
关注(0)|答案(4)|浏览(123)

我试图呈现一个简单的超链接,链接到页面中的一个命名的锚,例如:

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

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

问题是,当我使用像asp:HyperLinkHtmlAnchor这样的ASP.NET控件时,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>

我使用HtmlAnchorHyperLink类,因为我想在后面的代码中对其他属性进行更改。我不想为这个需求引入一个自定义的web控件,因为我所追求的需求并不重要到足以证明放弃传统的ASP.NET链接控件是正确的。看起来我应该能够使用ASP.NET链接控件来生成所需的链接。

2wnc66cl

2wnc66cl1#

不使用NavigateUrl属性,而只使用href属性

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

c90pui9n2#

要在codebeath中设置HREF属性,请执行以下操作:

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

这将为您提供给予:

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

z9ju0rcb3#

将其设置为链接上的自定义属性:

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

这将为您提供给予:

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

brgchamk4#

如果您必须使用NavigateUrl属性(有时这是必要的),则可以使用:用途:

hypID.NavigateUrl = HttpContext.Current.Request.Url.AbsoluteUri & "#MyAnchor"

相关问题