Динамически установить свойство NavigateUrl элемента управления гиперссылки встроенным - PullRequest
13 голосов
/ 29 августа 2010

Как я могу динамически установить автономное (не в gridview) свойство NavigateUrl элемента управления гиперссылкой, встроенное в страницу aspx?

Я пытался сделать следующее, но это не сработало.

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

Ответы [ 3 ]

28 голосов
/ 29 августа 2010

Вы можете сделать это в коде:

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

ОБНОВЛЕНИЕ:

Теперь, когда Марко Ивановский указал мне в комментариях, что эта гиперссылка находится внутри GridViewкоторый я сначала не заметил, проще всего было бы использовать привязку данных (<%# синтаксис):

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

В этом случае pageid является свойством источника данных.


ОБНОВЛЕНИЕ 2:

Вам действительно нужен серверный контроль?Как насчет:

<a href="<%= this.ResolveUrl("~/mypage.aspx?id=" + pageid) %>">
    My Page
</a>
4 голосов
/ 29 августа 2010

На самом деле вы можете написать простой строковый метод в своем файле кода.

Пример

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

И затем использовать его как ..

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

при условии, что pageid существует

0 голосов
/ 21 сентября 2015
<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...