How can I dynamically set a stand alone(not in gridview) hyperlink control's NavigateUrl property inline in the aspx page?

I have tried to do the following, but it did not work.

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

3 Answers

You could do this in the codebehind:

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

UPDATE:

Now that @Marko Ivanovski pointed me in the comments that this hyperlink is inside a GridView which I didn't notice in the beginning the easiest would be to use databinding (<%# syntax):

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

In this case pageid is a property of the data source.


UPDATE 2:

Do you really need a server side control? How about:

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

You can actually write a simple string method in your codebehind file.

Example

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

And then use it like..

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

provided pageid exists

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

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.