2012-12-26 169 views
14

如何使用asp:Buttonasp:LinkButton作爲asp:Hyperlink如何使(鏈接)按鈕功能作爲超鏈接?

現有的超鏈接只是去同一個頁面上的其他部分:NavigateUrl="#Section2"

我想這樣做的aspx文件而無需額外的編碼。謝謝。

目的是讓按鈕外觀,而不是下劃線的文字BUT 我不想用超鏈接圖像來達到此目的。

+1

爲什麼要這樣做,而不是直接使用超鏈接? – Aristos

+7

回到HTML基礎(如Aristos評論):爲什麼你甚至會考慮ASP.Net控件? ASP.Net中沒有規定你應該「總是使用控件」。一個簡單的[超鏈接](http://www.w3schools.com/html/html_links.asp)就可以做到。你可以隨意調整它的樣式...... – EdSF

回答

18

可以使用的OnClientClick事件調用JavaScript函數:

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

JavaScript代碼:

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

但我認爲最好的將是風格的CSS的超鏈接。

實施例:

.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

似乎沒有工作的點擊重定向...應該是單引號? – aspiring

10

有一種折中的辦法。如果你想有一個HTML控件,但你需要訪問服務器端,您可以簡單地添加了runat="server"屬性:

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

然後,您可以使用Attributes

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

從而改變href服務器端:

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

完成此操作的最佳方法是簡單地將「href」添加到下面的鏈接按鈕。

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

使用Javascript,或者這樣做編程方式在Page_Load,也能發揮作用,但不是去這樣做的最佳方式。

你會得到這樣的結果:

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

您還可以通過使用常規 <a href="" class=""></a>使用得到相同的結果。