2010-08-29 70 views
13

如何在aspx頁面中動態設置超鏈接控件的導航屬性inline(不在gridview中)?動態設置超鏈接控件的導航屬性內聯

我試圖做到以下,但它沒有奏效。

<asp:HyperLink id="MyLink" 
    NavigateUrl="../mypage.aspx?id=<%= pageid %>" 
    runat="server">My Page</asp:HyperLink> 

回答

28

你可以在代碼隱藏做到這一點:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     string pageid = "123"; 
     MyLink.NavigateUrl = string.Format("../mypage.aspx?id={0}", pageid); 
    } 
} 

UPDATE:

現在@Marko伊凡諾夫斯基指出我的意見,這超鏈接是GridView我沒有在一開始發現的最簡單的辦法是使用數據綁定(<%#語法)內:

<asp:TemplateColumn> 
    <ItemTemplate> 
     <asp:HyperLink 
      id="MyLink" 
      NavigateUrl='<%# Eval("pageid", "~/mypage.aspx?id={0}") %>' 
      runat="server"> 
     My Page 
     </asp:HyperLink> 
    </ItemTemplate> 
</asp:TemplateColumn> 

在這種情況下,pageid是數據源的屬性。


更新2:

你真的需要一個服務器端控制?如何:

<a href="<%= this.ResolveUrl("~/mypage.aspx?id=" + pageid) %>"> 
    My Page 
</a> 
+0

他提到該鏈接在GridView中:) – Marko 2010-08-29 09:05:47

+0

@Marko,對,謝謝你指出了這一點。我沒有仔細閱讀這個問題:-) – 2010-08-29 09:18:24

+0

沒有probs - +1的一個很好的解決方案 – Marko 2010-08-29 09:21:09

4

你實際上可以在你的代碼隱藏文件中寫一個簡單的字符串方法。

public string formatUrl(string pageId) { 
    return "../mypage.aspx?id=" + pageId; 
} 

,然後用它像..

<asp:HyperLink id="MyLink" NavigateUrl="<%= formatUrl(pageid) %>" runat="server">My Page</asp:HyperLink> 

提供的pageid存在

+5

這是我試過了,但代碼沒有得到運行,它出來的: 的http://本地主機/ mysite的/ <%= formatUrl(的pageid)%> – dtc 2010-08-29 09:43:33

+0

@metanaito:相同。你解決了這個問題嗎? – abatishchev 2011-11-19 14:39:00

0
<asp:TemplateField HeaderText="Name" HeaderStyle-Width="100"> 
    <ItemTemplate> 
     <a href="f.aspx?id=<%# DataBinder.Eval(Container, "DataItem.i")%>"> 
      <asp:Label ID="lblN" Font-Underline="true" runat="server" Width="80px" Text='<%#DataBinder.Eval(Container.DataItem,"n")%>' /> 
     </a> 
    </ItemTemplate> 
</asp:TemplateField>