2010-08-29 7 views

Respuesta

28

usted puede hacer esto en el código subyacente:

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

ACTUALIZACIÓN:

Ahora que @Marko Ivanovski me señaló en los comentarios que este hipervínculo está dentro de un GridView, que no me di cuenta en un principio el más fácil sería utilizar el enlace de datos (<%# sintaxis):

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

En este caso, pageid es una propiedad de la fuente de datos.


ACTUALIZACIÓN 2:

lo que realmente necesita un control del lado del servidor? ¿Qué tal:

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

Menciona que el enlace está dentro de un GridView :) – Marko

+0

@Marko, a la derecha, gracias por señalar esto. No leí la pregunta con cuidado :-) –

+0

Sin problemas - +1 para una buena solución – Marko

4

En realidad, puede escribir un método de cadena simple en su archivo codebehind.

Ejemplo

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

y luego usarlo como ..

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

proporcionado PageID existe

+5

Esto es algo que he intentado, pero el código no consigue ejecutar y sale como: http: // localhost/MySite/<% = formatUrl (PageID)%> – dtc

+0

@metanaito: Mismo. ¿Has resuelto este problema? – abatishchev

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