我试图渲染一个链接到页面中命名锚点的简单超链接,例如:
<a href="#namedAnchor">scroll to down</a>
<a name="namedAnchor">down</a>
Run Code Online (Sandbox Code Playgroud)
问题是,当我使用类似asp:HyperLink
or 的ASP.NET控件时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>
Run Code Online (Sandbox Code Playgroud)
生成的源看起来像:
<a href="controls/#namedAnchor">HtmlAnchor</a>
<a href="controls/#namedAnchor">HyperLink</a>
Run Code Online (Sandbox Code Playgroud)
我真的只想要:
<a href="#namedAnchor">HtmlAnchor</a>
<a href="#namedAnchor">HyperLink</a>
Run Code Online (Sandbox Code Playgroud)
我正在使用HtmlAnchor
或者HyperLink
类,因为我想在后面的代码中更改其他属性.我不想为此要求引入自定义Web控件,因为我所追求的要求并不足以证明放弃传统的ASP.NET链接控件.看起来我应该能够使用ASP.NET链接控件来生成所需的链接.
R0M*_*RMY 26
不要使用NavigateUrl属性,只需使用href属性
<asp:HyperLink href="#namedAnchor" runat="server">HyperLink</asp:HyperLink>
Run Code Online (Sandbox Code Playgroud)
小智 7
要在代码隐藏中设置HREF属性:
HyperLink link = new HyperLink();
link.Attributes.Add("href", "#" + doc.DocumentID.ToString());
link.Text = doc.DocumentNumber;
Run Code Online (Sandbox Code Playgroud)
这会给你:
<a href="#111">blah blah</a>
Run Code Online (Sandbox Code Playgroud)