2013-06-03 53 views
-2

好的,我在這裏有一些代碼從我的項目。在C中的文本框和頁面加載的問題#

基本上用戶進入頁面,他們當前的密碼在密碼文本框中,他們的頭像在下拉列表中被選中。

他們可以通過編輯文本框中的文本來更改密碼,並通過從列表中選擇一個新的頭像來更改他們的頭像。然後將其寫入保存此信息的文件中。它寫入文件好,但它寫入了最初在文本框和下拉列表中的內容。

如果我註釋掉在頁面加載這些行:

avatarDropList.SelectedValue = Session["avatar"].ToString(); 

newPasswordTextbox.Text = Session["password"].ToString(); 

它更新正確的文件,但是這不是我想要的,我想要顯示的舊密碼有最初以及化身在保管箱中選擇。下面

代碼:

public partial class TuitterProfile : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     avatarImage.ImageUrl = "~/images/avatars/" + Session["avatar"] + ".gif"; 
     avatarDropList.SelectedValue = Session["avatar"].ToString(); 
     userNameTextbox.Text = Session["user"].ToString(); 
     newPasswordTextbox.Text = Session["password"].ToString(); 
    } 

    protected void okButton_Click(object sender, ImageClickEventArgs e) 
    { 
     string username = Session["user"].ToString(); 
     string password = Session["password"].ToString(); 
     string newPassword = newPasswordTextbox.Text; 
     string newAvatar = avatarDropList.SelectedValue; 
     int allDataReference = -1; 

     //Each element in the array is a string(Username Password Avatar) 
     string[] allData = File.ReadAllLines(Server.MapPath("~") + "/App_Data/tuitterUsers.txt"); 

     for (int i = 0; i < allData.Length; i++) 
     { 
      string[] user = allData[i].Split(' '); 
      if (user[0] == username && user[1] == password) 
      { 
       allDataReference = i; 
      } 
     } 

     if (allDataReference > -1) 
     { 
      Session["avatar"] = newAvatar; 
      Session["password"] = newPassword; 
      allData[allDataReference] = username + " " + newPassword + " " + newAvatar; 
      File.WriteAllLines(Server.MapPath("~") + "/App_Data/tuitterUsers3.txt", allData); 
     } 

    } 
} 
+0

請重新命名的問題,使之更具描述性 –

+2

什麼標題:) – Sachin

+0

感謝誰修復它我不知道我在做什麼:) – Rothmanberger

回答

8

在ASP.Net頁面事件生命週期的Page_Load被稱爲在每次請求。你在這裏做的是每次頁面加載時重置TextBox的值,這將包括按下按鈕保存配置文件的時間。

所有你需要做的是檢查當前請求是回發當您設置的初始值:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     avatarImage.ImageUrl = "~/images/avatars/" + Session["avatar"] + ".gif"; 
     avatarDropList.SelectedValue = Session["avatar"].ToString(); 
     userNameTextbox.Text = Session["user"].ToString(); 
     newPasswordTextbox.Text = Session["password"].ToString(); 
    } 
} 
+0

這很有幫助。有趣的是,我之前詢問的其他問題之一是出於同樣的原因。謝謝你。 – Rothmanberger

+0

它可能需要一段時間才能沉入,也許這將有助於未來:http:// msdn.microsoft.com/en-us/library/ms178472.aspx =] – Sean

+0

謝謝,我會馬上教育自己! – Rothmanberger