0

我想在标记上使用 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>
4

2 回答 2

1

您可以在服务器标签内绑定数据。例如

<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(); }
}

NavigateUrl 在调用DataBind()使用此方法期间被设置。在我的示例中,该值将在页面加载期间设置,但您不必专门这样做。如果您需要它在页面生命周期的不同时间发生,您可以尝试DataBind()在不同的事件期间调用。

于 2013-08-02T23:02:15.507 回答
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>
于 2013-08-02T22:45:45.203 回答