2012-12-26 54 views
14

Tôi làm cách nào để sử dụng asp:Button hoặc asp:LinkButton làm asp:Hyperlink?Làm thế nào để làm cho (liên kết) nút chức năng như siêu liên kết?

Các Hyperlink hiện chỉ đi vào phần khác trên cùng một trang: NavigateUrl="#Section2"

Tôi muốn làm điều này trong file aspx mà không cần mã hóa bổ sung. Cảm ơn.

Mục đích là để có một nút nhìn thay vì văn bản được gạch chân NHƯNG Tôi không muốn sử dụng hình ảnh có siêu liên kết để đạt được mục đích này.

+1

tại sao phải làm điều đó và không trực tiếp sử dụng Siêu kết nối? – Aristos

+7

Quay lại các khái niệm cơ bản về HTML (như được Aristos bình luận): Tại sao bạn thậm chí còn xem xét các điều khiển ASP.Net cho điều này? Không có quy tắc trong ASP.Net rằng bạn "nên" luôn luôn sử dụng điều khiển. Một [hyperlink] đơn giản (http://www.w3schools.com/html/html_links.asp) sẽ thực hiện. Bạn có thể 'style' nó như bạn muốn ... – EdSF

Trả lời

18

Bạn có thể sử dụng sự kiện OnClientClick để gọi một hàm JavaScript:

<asp:Button ID="Button1" runat="server" Text="Button" onclientclick='redirect()' /> 

mã JavaScript:

function redirect() { 
    location.href = 'page.aspx'; 
} 

Nhưng tôi nghĩ rằng tốt nhất là nên phong cách một siêu liên kết với css.

Ví dụ:

.button { 
    display: block; 
    height: 25px; 
    background: #f1f1f1; 
    padding: 10px; 
    text-align: center; 
    border-radius: 5px; 
    border: 1px solid #e1e1e2; 
    color: #000; 
    font-weight: bold; 
} 
+0

Dường như không làm việc chuyển hướng trên nhấp chuột ... nên được trích dẫn duy nhất? – aspiring

10

Có một con đường trung đạo. Nếu bạn muốn một điều khiển HTML nhưng bạn cần phải truy cập vào máy chủ bên nó, bạn chỉ có thể thêm runat="server" thuộc tính:

<a runat="server" Id="lnkBack">Back</a> 

Sau đó bạn có thể thay đổi phụ href máy chủ sử dụng Attributes

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     lnkBack.Attributes.Add("href", url); 
    } 
} 

kết quả là:

<a id="ctl00_ctl00_mainContentPlaceHolder_contentPlaceHolder_lnkBack" 
     href="url.aspx">Back</a> 
2

Cách tốt nhất để thực hiện việc này là chỉ cần thêm "href" vào nút liên kết như dưới đây.

<asp:LinkButton runat="server" id="SomeLinkButton" href="url" CssClass="btn btn-primary btn-sm">Button Text</asp:LinkButton> 

Sử dụng javascript hoặc thực hiện lập trình này trong page_load, cũng sẽ hoạt động nhưng không phải là cách tốt nhất để thực hiện việc này.

Bạn sẽ nhận được kết quả này:

<a id="MainContent_ctl00_SomeLinkButton" class="btn btn-primary btn-sm" href="url" href="javascript:__doPostBack(&#39;ctl00$MainContent$ctl00$lSomeLinkButton&#39;,&#39;&#39;)">Button Text</a> 

Bạn cũng có thể nhận được kết quả tương tự bằng cách sử dụng sử dụng thường xuyên <a href="" class=""></a>.

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