textbox获取不到页面刷新前的值!我已经在pageload事件里对text重新赋值了,但就是获取不到!求解!

时间:2021-10-15 17:45:38
前台:
用户名:  <asp:TextBox ID="txtLogName" runat="server" ></asp:TextBox>
 密码:<asp:TextBox ID="txtLogPwd" runat="server" TextMode="Password" ></asp:TextBox>
 验证码:<asp:TextBox ID="yanzhengma" runat="server" ></asp:TextBox>
  <asp:ScriptManager ID="ScriptManager1" runat="server">   </asp:ScriptManager>
                           <asp:UpdatePanel ID="Test"  runat="server"><ContentTemplate>
                         <img  alt="验证码" src="Checkcode.aspx"/>
                          <asp:LinkButton ID="LinkButton2" runat="server">看不清楚,换一张</asp:LinkButton>   </ContentTemplate></asp:UpdatePanel>
<asp:Button ID="Button1" runat="server" Text="  登 录 " onclick="btnLogin_Click"  />

后台:protected void btnLogin_Click(object sender, EventArgs e) 
      string connstr = "server=(local);Initial Catalog=Poemroom.comMay 17th;Integrated Security=True";
        SqlConnection conn = new SqlConnection(connstr);
        conn.Open();
        string sqlstr = "select username,pwd from Adminuser";
        SqlCommand cmd = new SqlCommand(sqlstr, conn);
        SqlDataReader Dr;
        Dr = cmd.ExecuteReader();
        string UserName = txtLogName.Text;
        string Password = txtLogPwd.Text;
        HttpCookie cookie = Request.Cookies["CheckCode"];
        while (Dr.Read())
        {  
         if (UserName == Dr["username"].ToString())  
            {
                Session["Username"] = UserName;
                               {
                    if (Password == Dr["pwd"].ToString())
                    {
                        Session["Password"] = Password;
                        Label4.Text = Password;
                        {
                            if (cookie.Value == yanzhengma.Text)
                            { Response.Redirect("AdminIndex.aspx"); }
                            if (cookie.Value.ToLower() == yanzhengma.Text)
                            { Response.Redirect("AdminIndex.aspx"); }
                            else
                            { Label2.Text = "验证码不正确,请重新输入"; }
                        }
                    }
                   else { Label2.Text = "密码不正确,请重新输入"; }
                }}
        Dr.Close();
        conn.Close();        } 
    protected void Page_Load(object sender, EventArgs e)
    {
       if (!IsPostBack)
          {
             txtLogName.Text = Session["Username"].ToString();
             txtLogPwd.Text = Session["Password"].ToString();
          }
    }

6 个解决方案

#1


 if (!IsPostBack)

會不會根本沒進去啊~ @@

#2


我的話會這樣寫

        protected void Page_Load(object sender, EventArgs e)
        {
            this.LoginCheck = true;

            if (!IsPostBack)
            {
                InitPage();
            }

            /* 這樣才能確保每次都抓到吧 */
            txtLogName.Text = Session["Username"].ToString();
            txtLogPwd.Text = Session["Password"].ToString();

        }

        protected void InitPage()
        {
            // 只有第一次才會進來  (ex: 按了F5更新頁面)
            // 通常我還會拿這個,當作來清理頁面用的方法 & 第一次進來這個頁面時的設定用
        }

#3


用户名:  <asp:TextBox ID="txtLogName" runat="server" ></asp:TextBox>
 密码:<asp:TextBox ID="txtLogPwd" runat="server" TextMode="Password" ></asp:TextBox>
 验证码:<asp:TextBox ID="yanzhengma" runat="server" ></asp:TextBox>
   <asp:ScriptManager ID="ScriptManager1" runat="server">   </asp:ScriptManager>
                           <asp:UpdatePanel ID="Test"  runat="server"><ContentTemplate>

                         <img  alt="验证码" src="Checkcode.aspx"/>
                          <asp:LinkButton ID="LinkButton2" runat="server">看不清楚,换一张</asp:LinkButton>   </ContentTemplate></asp:UpdatePanel>
<asp:Button ID="Button1" runat="server" Text="  登 录 " onclick="btnLogin_Click"  />


你的UpdatePanel为什么是这样用法?没包含在这个里面根本就不会回发到后台吧?虽然UpdatePanel好久不用了

#4


this.LoginCheck = true;   //  這行 請「註解掉」@@因為我頁面有繼承判斷是否有登入用的

#5


自己调试,一步步看看值到哪里消失

#6


楼主看向这里:

 protected void Page_Load(object sender, EventArgs e)
        {
            // 注意这里,这个事件, 无论是第一次打开页面,还是打开之后点击保存按钮的回调事件,这里都会被优先执行 ,执行完了这里,才会执行后面的Button_Oclick事件,这是执行顺序问题,要搞清楚

            if (!IsPostBack)
            {
                // 有里有些变态,只有第一次打开页面时才会执行,注意!,不包括点击按钮的回调事件,因为如果是点击按钮的回调事件,则 IsPostBack == true
 // 注意!按F5的刷新事件,同等于第一次打开页面,它并不是回调事件,所以IsPostBack == false
            }
        }

#1


 if (!IsPostBack)

會不會根本沒進去啊~ @@

#2


我的話會這樣寫

        protected void Page_Load(object sender, EventArgs e)
        {
            this.LoginCheck = true;

            if (!IsPostBack)
            {
                InitPage();
            }

            /* 這樣才能確保每次都抓到吧 */
            txtLogName.Text = Session["Username"].ToString();
            txtLogPwd.Text = Session["Password"].ToString();

        }

        protected void InitPage()
        {
            // 只有第一次才會進來  (ex: 按了F5更新頁面)
            // 通常我還會拿這個,當作來清理頁面用的方法 & 第一次進來這個頁面時的設定用
        }

#3


用户名:  <asp:TextBox ID="txtLogName" runat="server" ></asp:TextBox>
 密码:<asp:TextBox ID="txtLogPwd" runat="server" TextMode="Password" ></asp:TextBox>
 验证码:<asp:TextBox ID="yanzhengma" runat="server" ></asp:TextBox>
   <asp:ScriptManager ID="ScriptManager1" runat="server">   </asp:ScriptManager>
                           <asp:UpdatePanel ID="Test"  runat="server"><ContentTemplate>

                         <img  alt="验证码" src="Checkcode.aspx"/>
                          <asp:LinkButton ID="LinkButton2" runat="server">看不清楚,换一张</asp:LinkButton>   </ContentTemplate></asp:UpdatePanel>
<asp:Button ID="Button1" runat="server" Text="  登 录 " onclick="btnLogin_Click"  />


你的UpdatePanel为什么是这样用法?没包含在这个里面根本就不会回发到后台吧?虽然UpdatePanel好久不用了

#4


this.LoginCheck = true;   //  這行 請「註解掉」@@因為我頁面有繼承判斷是否有登入用的

#5


自己调试,一步步看看值到哪里消失

#6


楼主看向这里:

 protected void Page_Load(object sender, EventArgs e)
        {
            // 注意这里,这个事件, 无论是第一次打开页面,还是打开之后点击保存按钮的回调事件,这里都会被优先执行 ,执行完了这里,才会执行后面的Button_Oclick事件,这是执行顺序问题,要搞清楚

            if (!IsPostBack)
            {
                // 有里有些变态,只有第一次打开页面时才会执行,注意!,不包括点击按钮的回调事件,因为如果是点击按钮的回调事件,则 IsPostBack == true
 // 注意!按F5的刷新事件,同等于第一次打开页面,它并不是回调事件,所以IsPostBack == false
            }
        }