如何在超链接中的NavigateUrl中包含Session变量

时间:2010-08-03 06:24:34

标签: asp.net session-variables hyperlink

我确定我以前做过这个,但是不记得语法了。如何在超链接中的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>

2 个答案:

答案 0 :(得分:1)

如果您的链接不在数据绑定控件中,例如ListView,您仍然可以通过从代码隐藏控件的控件上调用.DataBind()来强制数据绑定(根据您的第一个代码片段)。

答案 1 :(得分:1)

因为您使用了数据绑定格式(<%#),所以需要从代码隐藏中调用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"]);