[英]Textbox in apsx.cs file won't update a changed text
我有一個由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;
}
}
有關更多信息,請參見下面的答案。 感謝大家!
嘗試檢查回發-
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
代碼當前將在每次單擊按鈕(或回發)后運行,並覆蓋您手動添加的值。
嘗試這個,
protected 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方法更改為:
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
CredentialsManager cm = new CredentialsManager();
TextBox_Benutzername.Text = cm.Username;
TextBox_Passwort.Text = cm.Password;
}
}
我認為問題在於,每次加載頁面時,您都在創建一個新的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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.