2013-08-02 18 views
0

我想在标记上使用Session变量的值。这是在UserContorl.ascx上编写的代码,NavigateUrl上的文件我想发送存储在会话变量中的用户名。出于某种原因,我不想在PageLoad函数上设置NavigateUrl值。如何在标记上使用服务器端变量

Note the code gives the error: The server tag is not well formed.

<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> 

回答

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

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> 
+0

错误:服务器标记不能包含<% ... %>结构。 它无法工作 –

相关问题