我无法理解这个简单代码的错误。
页面加载从填充带有会话数据的文本框开始,
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"]);
这很好用。然后,我在浏览器中手动编辑这些文本框值,并调用按钮功能,该功能必须简单地用文本框中的给定数据更新会话值,并重新编写文本框作为确认,
Session["giris"] = "test string";
这是我失败的地方。会话值保持不变,不会更新。如果我将会话值更改为按钮功能中的静态值,例如
<arguments>
它工作正常,更新会话和文本框。但是,如果我尝试从文本框中获取值,代码的行为就像我从未更改过文本框的文本。
提前致谢
答案 0 :(得分:2)
代码表现得像我从未改变过文本框的文本
你做了,但后来又把它改回来了。
在ASP.NET WebForms页面生命周期中,{/ 1}}在执行事件处理程序之前在回发上执行。所以发生了什么:
Page_Load
TextBox
值
Page_Load
中设置TextBox
值(这是问题所在)Page_Load
值为了防止你的TextBox
逻辑在回发后执行,你可以用条件包装它:
Page_Load
这样代码只会在首次加载页面时执行,因此您不会在每次回发时覆盖更新后的值。
答案 1 :(得分:0)
把它放在里面,因为当页面回发时它会在会话中将相同的旧值分配给文本框,这就是为什么你得到旧值。
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"]);
}