代码之家  ›  专栏  ›  技术社区  ›  Frank Schwieterman

对在名为anchor的页面中导航的锚标记使用htmlanchor或asp.net超链接

  •  17
  • Frank Schwieterman  · 技术社区  · 14 年前

    我正在尝试呈现一个简单的超链接,该超链接链接到页面中的已命名锚定,例如:

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

    问题是当我使用像 asp:HyperLink 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>
    

    生成的源如下所示:

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

    我只想:

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

    我正在使用 HTML-锚 HyperLink 类,因为我想更改代码中的其他属性。我不想为此需求引入定制的Web控件,因为我所追求的需求还不足以证明放弃传统的ASP.NET链接控件的合理性。似乎我应该能够使用ASP.NET链接控件来生成所需的链接。

    3 回复  |  直到 12 年前
        1
  •  26
  •   Roman    14 年前

    不要使用navigateURL属性,只需使用href属性

    <asp:HyperLink href="#namedAnchor" runat="server">HyperLink</asp:HyperLink>
    
        2
  •  7
  •   xyzzy_rad_eu    12 年前

    要在codebehind中设置href属性:

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

    这将给您:

    <a href="#111">blah blah</a>
    
        3
  •  0
  •   Christian Specht    13 年前

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

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

    这将给您:

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