Page_Load事件与IsPostBack属性

下面是一个登陆的界面:

 我们的需求是:

       第一次进入登陆界面时,用户名和密码应该为空,所以我们应该在Page_Load中将存放用户名和密码的两个文本框的内容清空。然后当我们单击登陆按钮时,将用户名和密码提交到服务器。

 

 

privatevoid Page_Load(object sender, EventArgs e)
    {
        {
            this.txtUserName.Text = "";
            this.txtUserPwd.Text = "";
        }
  }
privatevoid btn_Login(object sender, EventArgs e)
    {
        string userName = Request.Form["userName"].ToString();
        string userPwd = Request.Form.Get("userPwd").ToString();
        SqlConnection con = new SqlConnection("server=.;database=login;uid=sa;pwd=123456654321");
        SqlCommand cmd = new SqlCommand("selectcount(*) from login where userName='" + userName + "' anduserPwd='" + userPwd + "'", con);
        int count = Convert.ToInt32(cmd.ExecuteScalar());
        if (count > 0)
        {
            Response.Redirect("main.aspx");
 
        }
     }
 



 

 

 

 

结果:

       当我们进入登陆界面时,用户名和密码的内容的确清空,但是当我们确不能登陆成功。

原因:

        当执行btn_Login事件时同时会执行Page_Load事件,并且Page_Load的执行顺序先于btn_Login的执行顺序。所以当我们单击登陆按钮时,它会先执行Page_Load事件,文本框的内容就会清空,在btn_Login事件中获取到的内容不是我们在界面输入的值,而是空值,所以,不能登陆。

Page_Load事件的特性:

       无论页面的其它任何事件执行时都会先执行Page_Load事件。

       因此,当加载页面并对控件的更改属性进行处理之前,应该先在Page_Load事件中检查该页面是否为被传递回的页面,即要进行IsPostBack的属性的判断。

      Ispostback:就是判断页面是首次加载的,还是数据回发(有get或者post请求过的)后的页面。对于首次加载的页面,IsPostBack的值为false,其它时候加载的页面都是回发页面,IsPostBack的值为true。

 

privatevoid Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack )
        {
            this.txtUserName.Text = "";
            this.txtUserPwd.Text = "";
        }
    }
 
 

这样,每次进行一下判断,可以给我们省去好多麻烦。 --------------------- 本文来自 九期赵欢欢 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/zhaohuanhuanjiuqi/article/details/18718035?utm_source=copy 

posted on 2018-10-03 22:14  asdyzh  阅读(214)  评论(0编辑  收藏  举报

导航