Как включать Переменную сеанса в NavigateUrl в гиперссылке

Я уверен, что сделал это прежде, но не могу помнить синтаксис. Как я включаю переменную сеанса в nagivateUrl в гиперссылке?

Я попробовал это:

<asp:HyperLink ID="lnkMyLink" runat="server" Text="My Link" 
 NavigateUrl='<%# "http://absoluteURL.org?param=" +
 Session["myParameterValue"].ToString()%>'></asp:HyperLink>

и это:

<asp:HyperLink ID="lnkMyLink" runat="server" Text="My Link" 
 NavigateUrl='<%# String.Format("http://absoluteURL.org?param={0}",
 Session["myParameterValue"].ToString()) %>'></asp:HyperLink>
1
задан Rob 3 August 2010 в 06:30
поделиться

2 ответа

Поскольку вы использовали формат привязки данных ( <% # ), вам необходимо вызвать метод HyperLinks .DataBind () из вашего внутреннего кода.

Вам нужно, чтобы ваш метод Page_Load выглядел примерно так:

protected void Page_Load(object sender, EventArgs e)
{
    lnkMyLink.DataBind();
}

Единственное, что следует иметь в виду, что использование привязки данных для чего-то вроде этого, то есть не привязки конкретных данных, может немного сбить с толку любого, кто должен поддерживать ваш код в будущем. Хотя определить, что вы сделали и почему вы это сделали, будет довольно быстро и легко, все, что может вызвать путаницу в будущем, должно быть по возможности удалено из вашего кода. Поэтому потенциально лучшим вариантом было бы поместить следующее в вашу Page_Load :

lnkMyLink.NavigateUrl = 
    string.Format("http://absoluteURL.org?param={0}", Session["myParameterValue"]);
1
ответ дан 2 September 2019 в 22:29
поделиться

Если ваша ссылка не находится в элементе управления, связанном с данными, таком как ListView, вы все равно можете принудительно связать данные (согласно вашему первому фрагменту кода), вызвав .DataBind() для элемента управления из code-behind.

1
ответ дан 2 September 2019 в 22:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: