Dynamically set a hyperlink control's NavigateUrl property inline
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 id="MyLink" 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>
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 id="MyLink" NavigateUrl="<%= formatUrl(pageid) %>" runat="server">My Page</asp:HyperLink>
provided pageid exists
<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>