主页asp.net中的会话

时间:2014-04-28 11:30:32

标签: 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)
            {
                divLogin.Visible = true;
                divLogout.Visible = false;
            }
            else
            {
    
                divLogin.Visible = false;
                divLogout.Visible = true;
            }
    
    
        }
    

    请帮忙。

  • 3 个答案:

    答案 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事件中提供此逻辑。


    很高兴帮忙!如果您觉得有帮助,请记得接受答案。