C# 为会话分配文本框值
我不明白这个简单的代码有什么问题 页面加载从用会话数据填充文本框开始C# 为会话分配文本框值,c#,asp.net,session,textbox,auto-update,C#,Asp.net,Session,Textbox,Auto Update,我不明白这个简单的代码有什么问题 页面加载从用会话数据填充文本框开始 tbgiris.Text = Convert.ToString(Session["giris"]); tbmail.Text = Convert.ToString(Session["mail"]); tbisim.Text = Convert.ToString(Session["isim"]); tbgrup.Text = Convert.ToString(Session["grup"]);
tbgiris.Text = Convert.ToString(Session["giris"]);
tbmail.Text = Convert.ToString(Session["mail"]);
tbisim.Text = Convert.ToString(Session["isim"]);
tbgrup.Text = Convert.ToString(Session["grup"]);
tbkimlik.Text = Convert.ToString(Session["kimlik"]);
tbadmin.Text = Convert.ToString(Session["admin"]);
这个很好用。然后,我在浏览器中手动编辑这些文本框值,并调用按钮功能,该功能只需使用文本框中的给定数据更新会话值,然后重新写入文本框作为确认
Session["giris"] = tbgiris.Text;
Session["mail"] = tbmail.Text;
Session["isim"] = tbisim.Text;
Session["grup"] = tbgrup.Text;
Session["kimlik"] = tbkimlik.Text;
Session["admin"] = tbadmin.Text;
tbgiris.Text = Convert.ToString(Session["giris"]);
tbmail.Text = Convert.ToString(Session["mail"]);
tbisim.Text = Convert.ToString(Session["isim"]);
tbgrup.Text = Convert.ToString(Session["grup"]);
tbkimlik.Text = Convert.ToString(Session["kimlik"]);
tbadmin.Text = Convert.ToString(Session["admin"]);
这就是我失败的地方。会话值保持不变,不会更新。如果我在button函数中将会话值更改为静态值,例如
Session["giris"] = "test string";
它工作正常,更新会话和文本框。但如果我试图从文本框中获取值,代码的行为就像我从未更改过文本框的文本一样
提前感谢将此内容放在内部,因为当页面发回时,它会在会话中将相同的旧值分配给文本框,这就是您获取旧值的原因
if (!IsPostBack)
{
tbgiris.Text = Convert.ToString(Session["giris"]);
tbmail.Text = Convert.ToString(Session["mail"]);
tbisim.Text = Convert.ToString(Session["isim"]);
tbgrup.Text = Convert.ToString(Session["grup"]);
tbkimlik.Text = Convert.ToString(Session["kimlik"]);
tbadmin.Text = Convert.ToString(Session["admin"]);
}
把它放在里面,因为当页面发回时,它会在会话中将相同的旧值分配给文本框,这就是为什么您会得到旧值
if (!IsPostBack)
{
tbgiris.Text = Convert.ToString(Session["giris"]);
tbmail.Text = Convert.ToString(Session["mail"]);
tbisim.Text = Convert.ToString(Session["isim"]);
tbgrup.Text = Convert.ToString(Session["grup"]);
tbkimlik.Text = Convert.ToString(Session["kimlik"]);
tbadmin.Text = Convert.ToString(Session["admin"]);
}
代码的行为就像我从未更改过文本框的文本一样
是的,但后来你又改回来了
在ASP.NET WebForms页面生命周期中,在执行事件处理程序之前,在回发上执行page\u Load
。所以现在发生的是:
- 在
页面加载中设置
值文本框
- 显示页面
- 更改值
- 提交页面
- 在
页面加载中设置
值(这就是问题所在)文本框
- 在事件处理程序中获取
值文本框
页面加载
逻辑,您需要将其包装为一个条件:
if (!IsPostBack)
{
// your logic here
}
这样,代码将仅在页面首次加载时执行,因此不会在每次回发时过度写入更新的值
代码的行为就像我从未更改过文本框的文本一样
是的,但后来你又改回来了
在ASP.NET WebForms页面生命周期中,在执行事件处理程序之前,在回发上执行page\u Load
。所以现在发生的是:
- 在
页面加载中设置
值文本框
- 显示页面
- 更改值
- 提交页面
- 在
页面加载中设置
值(这就是问题所在)文本框
- 在事件处理程序中获取
值文本框
页面加载
逻辑,您需要将其包装为一个条件:
if (!IsPostBack)
{
// your logic here
}
这样,代码将仅在页面首次加载时执行,因此不会在每次回发时过度写入更新的值