2010-04-07 37 views
16

Tôi cố gắng để làm cho một siêu liên kết đơn giản mà liên kết đến một anchor được đặt tên trong trang, ví dụ:Sử dụng HtmlAnchor hoặc ASP.NET HyperLink cho thẻ neo rằng điều hướng trong trang có tên neo

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

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

Vấn đề là khi tôi sử dụng điều khiển ASP.NET như asp:HyperLink hoặc HtmlAnchor, href="#namedAnchor" được hiển thị là href="controls/#namedAnchor" (trong đó controls là thư mục phụ nơi người dùng kiểm soát chứa neo). Dưới đây là mã cho sự kiểm soát, sử dụng hai loại điều khiển neo, mà cả hai đều có cùng một vấn đề:

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

Nguồn tạo ra trông giống như:

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

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

Tôi thực sự chỉ muốn:

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

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

Tôi đang sử dụng lớp HtmlAnchor hoặc HyperLink vì tôi muốn thực hiện thay đổi đối với các thuộc tính khác trong mã phía sau. Tôi không muốn giới thiệu một điều khiển web tùy chỉnh cho yêu cầu này, vì yêu cầu tôi đang theo đuổi không đủ quan trọng để biện minh cho việc bỏ qua các điều khiển liên kết ASP.NET truyền thống. Có vẻ như tôi sẽ có thể sử dụng các điều khiển liên kết ASP.NET để tạo liên kết mong muốn.

+0

có thể trùng lặp của [điều khiển người dùng asp.net, nhận htmlAnchor quyết tâm href = "#"] (http://stackoverflow.com/questions/1489332/asp -net-user-control-getting-htmlanchor-resolve-to-href) – zzzzBov

Trả lời

26

Thay vì sử dụng tài sản NavigateUrl, chỉ cần sử dụng tài sản href

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

Có vẻ như nó hoạt động. Cảm ơn. –

+0

Thú vị. Cảm ơn vì giải pháp này. – Rushino

+0

Không xác thực: Thuộc tính 'href' không phải là thuộc tính hợp lệ của phần tử 'HyperLink'. – cdonner

0

Set nó như là một thuộc tính tùy chỉnh vào liên kết:

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

này sẽ cung cấp cho bạn:

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

Để đặt thuộc tính HREF trong codebehind:

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

này sẽ cung cấp cho bạn:

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

Đây là giải pháp đúng để thực hiện nó trong mã. (Cũng làm việc cho lớp HtmlAnchor - thiết lập thuộc tính HRef trên HtmlAnchor cũng tạo ra thêm "crap") – misteraidan

Các vấn đề liên quan