LayoutTemplate 中的 Tetxtbox 没有采用 c# 中的更改文本

Tetxtbox inside LayoutTemplate is not taking the changing text in c#

我有两个网页,我使用会话将数据从一个网页发送到另一个网页。从第一个网页我使用会话获取数据到第二个页面并将其设置为 LayoutTemplate 内的文本框,如下所示,

protected void Page_Load(object sender, EventArgs e)
        {
            instructrid = Int32.Parse(Session["instructorId"].ToString());
            ((TextBox)Login1.FindControl("userName")).Text = Session["firstname"].ToString();
            ((TextBox)Login1.FindControl("password")).Text = Session["surname"].ToString();
            ((TextBox)Login1.FindControl("gender")).Text = Session["gender"].ToString();
            ((TextBox)Login1.FindControl("email")).Text = Session["email"].ToString();
            ((TextBox)Login1.FindControl("style")).Text = Session["style"].ToString();
            ((TextBox)Login1.FindControl("phonenumber")).Text = Session["phonenumber"].ToString();
            ((TextBox)Login1.FindControl("hourlyRate")).Text = Session["hourlyRate"].ToString();
            ((TextBox)Login1.FindControl("availability")).Text = Session["availability"].ToString();
        }

然后在第二页中,用户可以根据需要在文本框中编辑这些值。然后我将这些更改的值发送到数据库以更新它们。但问题是数据并没有从会话值改变。我能够编辑文本框中的值,但在后端它与从会话中设置的值相同。下面是通过单击按钮获取值的代码。

protected void Button1_Click(object sender, EventArgs e)
        {
            string firstname = ((TextBox)Login1.FindControl("userName")).Text;
            string surname = ((TextBox)Login1.FindControl("password")).Text;
            string gender = ((TextBox)Login1.FindControl("gender")).Text;
            string email = ((TextBox)Login1.FindControl("email")).Text;
            string style = ((TextBox)Login1.FindControl("style")).Text;
            string phonenumber = ((TextBox)Login1.FindControl("phonenumber")).Text;
            string hourlyrate = ((TextBox)Login1.FindControl("hourlyRate")).Text;
            string availability = ((TextBox)Login1.FindControl("availability")).Text;
            DBClass.editInstructor(instructrid, firstname, surname, gender, email, style,phonenumber, hourlyrate, availability);
        }

我不明白这是怎么发生的。请帮助

这是因为您在页面加载时设置值,并且每次页面回发时旧值都会从会话复制到文本 box.i。e 当您单击保存按钮时旧值首先复制到文本框,然后保存到数据库。只需将页面加载代码放在 if(!IspostBack) 中即可。

    protected void Page_Load(object sender, EventArgs e)
    {
       if(!IsPostBack)
       {  
        instructrid = Int32.Parse(Session["instructorId"].ToString());
        ((TextBox)Login1.FindControl("userName")).Text = Session["firstname"].ToString();
        ((TextBox)Login1.FindControl("password")).Text = Session["surname"].ToString();
        ((TextBox)Login1.FindControl("gender")).Text = Session["gender"].ToString();
        ((TextBox)Login1.FindControl("email")).Text = Session["email"].ToString();
        ((TextBox)Login1.FindControl("style")).Text = Session["style"].ToString();
        ((TextBox)Login1.FindControl("phonenumber")).Text = Session["phonenumber"].ToString();
        ((TextBox)Login1.FindControl("hourlyRate")).Text = Session["hourlyRate"].ToString();
        ((TextBox)Login1.FindControl("availability")).Text = Session["availability"].ToString();
       }
   }