2010-08-29 7 views

risposta

28

si potrebbe fare questo nel codebehind:

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

UPDATE:

Ora che @Marko Ivanovski mi ha segnalato nei commenti che il collegamento ipertestuale è all'interno di un GridView, che non ho notato in principio il più facile sarebbe quella di utilizzare l'associazione dati (<%# sintassi):

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

In questo caso pageid è una proprietà dell'origine dati.


UPDATE 2:

Avete davvero bisogno di un controllo lato server? Che ne dite:

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

Ha accennato al fatto che il collegamento si trova all'interno di GridView :) – Marko

+0

@ Marko, giusto, grazie per averlo indicato. Non ho letto attentamente la domanda :-) –

+0

Nessun problema - +1 per una buona soluzione – Marko

4

È possibile scrivere un semplice metodo di stringa nel file codebehind.

Esempio

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

e quindi utilizzarlo come ..

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

fornito pageid esiste

+5

Questo è qualcosa che ho provato, ma il codice non viene eseguito e viene fuori come: http: // localhost/MySite/<% = formatUrl (pageid)%> – dtc

+0

@metanaito: lo stesso. Hai risolto questo 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> 
Problemi correlati