Impostare dinamicamente un collegamento ipertestuale controllo della proprietà NavigateUrl inline

Come posso impostare dinamicamente stand-alone(non in gridview) collegamento ipertestuale controllo della proprietà NavigateUrl inline nella pagina aspx?

Ho provato a fare la seguente, ma non ha funzionato.

<asp:HyperLink id="MyLink"
  NavigateUrl="../mypage.aspx?id=<%= pageid %>"
  runat="server">My Page</asp:HyperLink>
InformationsquelleAutor dtc | 2010-08-29



3 Replies
  1. 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);
        }
    }

    AGGIORNAMENTO:

    Ora che @Marko Ivanovski mi ha segnalato nei commenti che questo collegamento ipertestuale all’interno di un GridView che non ho notato in principio il modo più semplice sarebbe quella di utilizzare il databinding (<%# 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.


    AGGIORNA 2:

    Non si ha realmente bisogno di un server di controllo laterale? Come circa:

    <a href="<%= this.ResolveUrl("~/mypage.aspx?id=" + pageid) %>">
        My Page
    </a>
    • Mi dice che il link è all’interno di una GridView 🙂
    • giusto, grazie per la precisazione. Non ho letto la domanda con attenzione 🙂
    • No probs – +1 per una buona soluzione
    • Grazie per le soluzioni. In realtà ho fatto per scoprire come farlo al di fuori di un DataGrid/GridView. Sto usando un normale collegamento ipertestuale. Ho aggiornato la questione da chiarire. Anche io sto cercando come fare in linea come alternativa all’uso del .Proprietà NavigateUrl da codebehind.
    • questo non può essere fatto in circostanze che si descrivono. Ti consiglierei di codebehind o semplice HTML (so che WebForms potrebbe avere effetti collaterali per le persone che utilizzano troppo, semplicemente dimenticare le nozioni di base di come funziona il web).
    • Grazie. Sì, ho pensato di usare un normale <a> tag, ma voglio anche impostare le altre proprietà del collegamento in codice dietro. Anche, sì, utilizzando webforms per 10 anni ho dimenticato html 🙁
    • Ho usato AGGIORNA 2 vie; funziona

  2. 4

    Si può effettivamente scrivere un semplice metodo per stringa nel file code-behind.

    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

    • Questo è qualcosa che ho provato, ma il codice non essere eseguito e viene fuori come: localhost/Miosito/<%= formatUrl(pageid) %>
    • Stesso. Avete risolto questo problema?
  3. 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>

Lascia un commento