我有一个由aspx文件组成的Web应用程序。
在页面加载时,两个文本框中填充了数据(“用户名”和“密码”)。这很有效。
在按钮上单击它应该保存文本框的文本。但由于某些原因,如果我同时手动更改文本框的文本(通过键盘输入一些字母),文本框的文本不会更新。
为什么?如何告诉我的程序考虑我的更改?
我的代码是:
protected void Page_Load(object sender, EventArgs e)
{
CredentialsManager cm = new CredentialsManager();
TextBox_Benutzername.Text = cm.Username;
TextBox_Passwort.Text = cm.Password;
}
protected void Button_Speichern_Click(object sender, EventArgs e)
{
CredentialsManager cm = new CredentialsManager();
cm.setCredentials(TextBox_Benutzername.Text, TextBox_Passwort.Text);
}
编辑:
它适用于这种改进:
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
CredentialsManager cm = new CredentialsManager();
TextBox_Benutzername.Text = cm.Username;
TextBox_Passwort.Text = cm.Password;
}
}
有关详细信息,请参阅以下答案。谢谢大家!
答案 0 :(得分:2)
尝试检查回发 -
private void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
CredentialsManager cm = new CredentialsManager();
TextBox_Benutzername.Text = cm.Username;
TextBox_Passwort.Text = cm.Password;
}
}
您的Page_Load
代码当前会在每次按键点击(或回发)后运行,并覆盖您手动添加的值。
答案 1 :(得分:1)
试试这个,
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack){
CredentialsManager cm = new CredentialsManager();
TextBox_Benutzername.Text = cm.Username;
TextBox_Passwort.Text = cm.Password;
}
}
答案 2 :(得分:1)
您正在为每个页面加载而不是第一页加载时将值分配给文本框。
将Page_Load方法更改为:
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
CredentialsManager cm = new CredentialsManager();
TextBox_Benutzername.Text = cm.Username;
TextBox_Passwort.Text = cm.Password;
}
}
答案 3 :(得分:1)
我认为问题在于,每次加载页面时都会创建一个新的CredentialsManager
(我假设新的CredentialsManager
有一个空的用户名和密码字段)。您应该只在新页面加载时执行此操作,而不是在单击按钮时刷新页面时执行此操作。这取决于Page.IsPostBack
属性,因此您需要做:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
CredentialsManager cm = new CredentialsManager();
TextBox_Benutzername.Text = cm.Username;
TextBox_Passwort.Text = cm.Password;
}
}