我想在标记上使用会话变量的值。这是在UserContorl.ascx上编写的代码,NavigateUrl上的文件,我想发送存储在会话变量中的用户名。出于某些原因,我不想在PageLoad函数上设置PageLoad值。
注意,代码给出了错误:服务器标记的格式不太好。
<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-02 23:02:15
可以在服务器标记中绑定数据。例如:
<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-02 22:45:45
不如:
<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>
https://stackoverflow.com/questions/18027180
复制相似问题