用c#.net编写。
做了一个用户登陆的控件,用主页中调用,数据库是用mssql。
用户登陆可以选择记录cookies,如果不选则用session。
现在我的问题是,就算是输入正确的用户名和密码,登陆窗口还是存在,登陆后的内容,需要刷新才能正常显示出来。
请问是何原因?

解决方案 »

  1.   

    登录代码show出来。不会登录成功后没写跳转吧
      

  2.   

    我LZ我是在同一个控件当中定义pannel的visible:true,false来操作的。
    如果登陆失败,则要求登陆的pannel_login.visible:true,用户菜单pannel_menu.visible:false
    如果登陆成功,则pannel_login.visible:false;pannel_menu.visible:true这种思路对否?
      

  3.   

    放在 if(!page.Ispostback)里面应该就行了吧
      

  4.   

    protected void Page_Load(object sender, EventArgs e)
        {
            if (Convert.ToString(Session["userLogin"]) == "yes")
            {
                pl1.Visible = false;
            }
            else
            {
                if (Request.Cookies["ehomeCookies"] != null)
                {
                    int userID = Convert.ToInt32(Request.Cookies["ehomeCookies"].Values["userID"]);
                    string u_password = Convert.ToString(Request.Cookies["ehomeCookies"].Values["password"]);                userLogin ul = new userLogin();
                    if (ul.if_Cookie(userID, u_password))
                    {
                        pl1.Visible = false;                    
                    }
                    else
                    {
                        pl1.Visible = true;                }
                }
            }
        }
      

  5.   

    逻辑写在button事件里就没问题,不要写在page_load里
      

  6.   

    完全没掉用到button事件!怎么执行?
      

  7.   

    protected void Button_Click(object sender, EventArgs e)
        {
         if(!page.Ispostback)
    {
            if (Convert.ToString(Session["userLogin"]) == "yes")
            {
                pl1.Visible = false;
            }
            else
            {
                if (Request.Cookies["ehomeCookies"] != null)
                {
                    int userID = Convert.ToInt32(Request.Cookies["ehomeCookies"].Values["userID"]);
                    string u_password = Convert.ToString(Request.Cookies["ehomeCookies"].Values["password"]);                userLogin ul = new userLogin();
                    if (ul.if_Cookie(userID, u_password))
                    {
                        pl1.Visible = false;                    
                    }
                    else
                    {
                        pl1.Visible = true;                }
                }
            }
        }
    }
      

  8.   

    回复:vlysses(张家)我把这些放在登陆的button里,是可以了。谢谢但现在出现另一个问题:
    我在另一个控件写的pannel,因为没有button事件,只有在page_load里判断,这里的pannel的visible如果来控制。
      

  9.   

    这是另一个页的代码。pl2,pl3只是用户的菜单。和第一个控件的位置不同,所以没放在一起。  
         
     if (Convert.ToString(Session["userLogin"]) == "yes")
            {
                pl2.Visible = true;
                pl3.Visible = true;
                menuRealName.Text = "<span class=rred1>" + Convert.ToString(Session["realname"]) + "</span>";
            }
            else
            {
                if (Request.Cookies["ehomeCookies"] != null)
                {
                    int userID = Convert.ToInt32(Request.Cookies["ehomeCookies"].Values["userID"]);
                    string u_password = Convert.ToString(Request.Cookies["ehomeCookies"].Values["password"]);                userLogin ul = new userLogin();
                    if (ul.if_Cookie(userID, u_password))
                    {
                        pl2.Visible = true;
                        pl3.Visible = true;
                        menuRealName.Text = "<span class=rred1>" + Convert.ToString(Request.Cookies["ehomeCookies"].Values["realname"]) + "</span>";
                    }
                    else
                    {
                        pl2.Visible = false;
                        pl3.Visible = false;
                    }
                }
                else
                {
                    pl2.Visible = false;
                    pl3.Visible = false;
                }
            }
      

  10.   

    因为这个页面是要记录是否自动登陆的,所以,用
    if(!page.ispostback)
    会影响显示
    就是有可能上次用户点击自动登陆后,再次登陆用ispostback判断,就会显示不出菜单