C# 母版页asp.net中的会话
我的母版页包含登录和注销按钮 我希望它在C# 母版页asp.net中的会话,c#,asp.net,asp.net-mvc,session,master-pages,C#,Asp.net,Asp.net Mvc,Session,Master Pages,我的母版页包含登录和注销按钮 我希望它在session[“Userid”]为空时可见和不可见 我该怎么做 我知道如何使可见和不可见 代码是: protected override void OnInit(EventArgs e) { base.OnInit(e); //string s = Session["UserId"].ToString(); if (Session["UserId"] != null) {
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;
}
}
请帮助。您必须为div设置runat=“server”
<div id="divLogin" runat="server"></div>
使用OnPreRender函数中的逻辑,因为用户登录和注销总是在母版页调用OnInit之后发生。因此,在刷新期间,您将获得适当的值,但不是第一次 您可以从中找到以下信息 母版页的行为类似于页面上的子控件:母版页初始化事件发生在页面初始化和加载事件之前,母版页加载事件发生在页面初始化和加载事件之后 我认为(很可能)您正在登录页面的buttonClick事件处理程序中设置用户的登录信息,该事件处理程序在母版页的OnInit之后被调用。因此,当母版页的OnInit被执行时,会话已经包含以前的状态(登录时为null,注销时为用户信息) 即使母版页上提供了登录控件和登录按钮,最好在PreRender事件中提供此逻辑
很乐意帮忙!如果您觉得答案有用,请记住接受它。您也可以通过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>
您的登录内容
您的注销内容
当前代码的行为如何?检查jquery,然后代表它隐藏和显示您无法将客户端与服务器端混合匹配,因此使用jquery是不正确的。这里的逻辑似乎颠倒了。当session为null时,它会显示logout div-应该是没有人问过的快速问题,session[“UserId”]
正在设置吗?您是否尝试过将其从OnInit
方法移到Page\u Load
方法中?visible
应替换为visible
不工作意味着什么?您收到“注销内容”或出现错误?如果负面投票人能提供原因,我将不胜感激。顺便说一句,我已经扩展了我的答案,包括额外的信息
<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>