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