aspx.cs文件中的文本框不会更新已更改的文本

时间:2011-09-06 12:30:49

标签: c# asp.net visual-studio

我有一个由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;      
    } 
}

有关详细信息,请参阅以下答案。谢谢大家!

4 个答案:

答案 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;     
   }
}