我想在标记上使用Session变量的值。这是在UserContorl.ascx上编写的代码,NavigateUrl上的文件我想发送存储在会话变量中的用户名。出于某种原因,我不想在PageLoad函数上设置NavigateUrl值。
请注意,代码会显示错误:服务器标记格式不正确。
<asp:Panel ID="pnlMenuItems" runat="server" HorizontalAlign="Left">
<asp:HyperLink ID="LinkLogout" runat="server" NavigateUrl="~/logout/"+
<%= HttpContext.Current.Session["UserName"].ToString(); %>> CssClass="pnlMenuItems"
ForeColor="#666666">Logout</asp:HyperLink>
</asp:Panel>
答案 0 :(得分:1)
您可以在服务器标记中绑定数据。 e.g。
<asp:HyperLink ID="LinkLogout" runat="server"
NavigateUrl="<%# LogoutUrl %>"
CssClass="pnlMenuItems"
ForeColor="#666666">Logout</asp:HyperLink>
然后在你的代码中:
protected string LogoutUrl {
get {
return "~/logout/" + HttpContext.Current.Session["UserName"].ToString();
}
}
protected void Page_Load(object sender, EventArgs e) {
if(!IsPostBack) { DataBind(); }
}
使用此方法在DataBind()
调用期间设置NavigateUrl。在我的示例中,值将在页面加载期间设置,但您不必专门执行此操作。如果您需要在页面生命周期的不同时间进行此操作,则可以尝试在其他活动期间调用DataBind()
。
答案 1 :(得分:0)
怎么样:
<asp:Panel ID="pnlMenuItems" runat="server" HorizontalAlign="Left">
<asp:HyperLink ID="LinkLogout" runat="server"
NavigateUrl="<%# "~/logout/" + HttpContext.Current.Session["UserName"].ToString() %>"
CssClass="pnlMenuItems"
ForeColor="#666666">Logout</asp:HyperLink>
</asp:Panel>