我的母版页包含登录和注销按钮。
当session["Userid"]
为空时,我希望它可见且不可见。
我该怎么做?
我知道如何制作可见和不可见的
代码是:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
//string s = Session["UserId"].ToString();
if (Session["UserId"] != null)
{
divLogin.Visible = true;
divLogout.Visible = false;
}
else
{
divLogin.Visible = false;
divLogout.Visible = true;
}
}
请帮忙。
答案 0 :(得分:1)
您也可以使用HTML中的代码实现此目的。尝试,
<div id="divLogin" style="display: <%= Session["UserId"]!=null ? "none" : "block" %>">Your Login content</div>
<div id="divLogout" style="display: <%= Session["UserId"]==null ? "none" : "block" %>">Your Logout content</div>
答案 1 :(得分:0)
您必须为div设置runat="server"
。
<div id="divLogin" runat="server"></div>
代码背后
divLogin.visible=false;
答案 2 :(得分:-1)
使用OnPreRender功能中的逻辑作为用户登录&amp;注销总是在为母版页调用OnInit之后发生。因此,在刷新期间,您将获得正确的值,但不是第一次。
从MSDN您可以找到以下信息
主页面的行为与页面上的子控件类似:主页面Init事件发生在页面Init和Load事件之前,主页面Load事件发生在页面Init和Load事件之后。 < / p>
我认为(最有可能)您在Login页面的buttonClick事件处理程序中设置用户的登录信息,该处理程序在母版页的OnInit之后调用。因此,当主页面的OnInit执行时,Session已经包含以前的状态(登录时为null,注销时用户信息)
即使主页面上提供了登录控件和登录按钮,最好在PreRender事件中提供此逻辑。
很高兴帮忙!如果您觉得有帮助,请记得接受答案。