2010-08-29 56 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>