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>