c#中文本框和页面加载的问题

本文关键字:加载 问题 中文 文本 | 更新日期: 2023-09-27 18:16:28

现在我有一些项目中的代码。

基本上用户进入页面,他们的当前密码在密码文本框中,他们的头像在下拉列表中被选中。

他们可以通过编辑文本框中的文本来更改密码,并通过从列表中选择一个新的头像来更改他们的头像。然后将其写入保存该信息的文件。它会写入文件,但它会写入文本框和下拉列表中最初的内容。

如果我注释掉页面中的这些行:

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

它正确地更新了文件,但这不是我想要的,因为我想要旧密码显示在那里最初以及在dropbox中选择的头像。

下面的代码:

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);
        }
    }
}

c#中文本框和页面加载的问题

Net页面事件生命周期中,每次请求都会调用Page_Load。你在这里所做的是重置文本框的值,每次页面加载,这将包括你按下按钮保存配置文件的时间。

当你设置初始值时,你所需要做的就是检查当前请求是否为回发:

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();
    }
}