第一个页面上制作了一个 Session["username"]
if (dr.Read())
        {
            Session["username"] = dr["username"].ToString();
                Response.Redirect("Default2.aspx");        }但到了Default2.aspx之后
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string usa = (string)Session["username"];
       if (usa == "test")
            Response.Write("登录成功");
        else
        Response.Write("登录失败,请先输入账号和密码,然后登录.");
    }
}怎么一直显示的是“登录失败,请先输入账号和密码,然后登录” 这个啊?
怎么不显示登录成功啊? 难道是Session写错了? 请问在asp.net里如何写啊?

解决方案 »

  1. 你要先确定Session赋值成功了,
    Session["username"] = dr["username"].ToString();
    然后到Default2 页面调试看看,是否有值,就知道问题的所在了
      


  2. if (usa.Equals("test"))
      Response.Write("登录成功");
      else
      Response.Write("登录失败,请先输入账号和密码,然后登录.");
      }
    试下呢
      

  3. 先定义一个变量
    string str=dr["username"].ToString();
    if(str!="")
    {
      Session["username"] = dr["username"].ToString();
    }
    else
    {
      //未查到信息
    }你调试看看
      

  4. 那就说明你的dr["username"].ToString()这个里面的内容不是"test"这个值。
    你在页面2中直接吧Response.Write( (string)Session["username"])看内容到底是什么。
      

  5. dr.read() 记录集是对条还是一条,如果为多条的话,Session值会不断变化,如果为一条的话,首先确定是否获取到了该值
      

  6. dr中如果有多条数据,则Session中存的是最后一条
      

  7.  if(Session["username"] != null)
               string usa = (string)Session["username"];        if (usa.Equals("test"))
                  Response.Write("登录成功");
               else
               Response.Write("登录失败,请先输入账号和密码,然后登录.");
    调试的时候提示 string usa = (string)Session["username"];这一行的 string  嵌入的语句不能是生命或标记语句
      

  8. 可以这么改下:
    第一个页面上制作了一个 Session["username"]
    if (dr.Read())
      {
       String userName = dr["username"].ToString();
       if(userName == "test")
         Session["username"] = userName;
      //....
      Response.Redirect("Default2.aspx");  }但到了Default2.aspx之后
    public partial class Default2 : System.Web.UI.Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {  if (Session["username"] != null)
        Response.Write("登录成功");
      else
        Response.Write("登录失败,请先输入账号和密码,然后登录.");
      }
    }
      

  9. 但到了Default2.aspx之后这样写
    public partial class Default2 : System.Web.UI.Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {
            if (!Page.IsPostBack)
            {
                if (Session["username"] != null)
                {
                   string usa=Session["username"].tostring();
                   if(usa=="test")
                   {
                     Response.Write("登录成功");                } 
                    else
                     {
                          Response.Write("登录失败,请先输入账号和密码,然后登录.");                  } 
                }
            }
    }
      

  10. 跟踪一下 usa 里到底是什么值
      

  11.   if (dr.Read())
            {
                string userName = dr["username"].ToString();
                Response.Write(userName);            if (userName == "test")
                {
                    Session["username"] = userName;
                  
                    Response.Redirect("Default2.aspx");
                }
            }
            else
            {
                  Lbl_note.Text = "登录失败,请检查输入!";
            }
    Default2 页面
    public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if(Session["username"] != null)
               Response.Write("登录成功");
             else
               Response.Write("登录失败,请先输入账号和密码,然后登录.");    }
    }上面这个页面中Response.Write(userName); 这个显示了 test,但为什么不能跳转到Default2页面呢
      

  12. usa值不等于test或者session没有值就会这样子喽,楼主仔细调试下相信不难解决
      

  13. string userName = dr["username"].ToString();
    这里的userName 经过调试 发现是 “test   ” , test之后有很多空格如何去掉这些空格啊?
      

  14. 很显然你session中不是test值,自己断点监视看看
      

类似问题 »