保存文本框文本到XML文件

本文关键字:文本 文件 XML 保存 | 更新日期: 2023-09-27 18:17:29

我有一个ASP。. NET WebForm, 1个按钮和4个文本框。

每次加载页面时,执行以下代码从XML文件读取数据并显示在文本框中:

private void PutWhatWasBefore()
{
    var xml = XDocument.Load(@"C:'Settings.xml");
    From_display.Text = xml.Element("Settings").Element("Remember").Attribute("fromdisplay").Value.ToString();
    From_Smtp.Text = xml.Element("Settings").Element("Remember").Attribute("fromsmtp").Value.ToString();
    subject.Text = xml.Element("Settings").Element("Remember").Attribute("subject").Value.ToString();     
}

这段代码工作得很好,它把所有内容都放在文本框中。但是,这是一个很大的但是,当我单击按钮时,以下代码写入XML文件不起作用:

string tem = Template1.Text;
string from = From_Smtp.Text;
string dis = From_display.Text;
string sub = subject.Text;
var x = new XDocument(
    new XElement("Settings",
        new XElement("Remember",
            new XAttribute("fromsmtp", from),
            new XAttribute("subject", sub),
            new XAttribute("fromdisplay", dis),
            new XAttribute("template", tem)
        )
    )
);
x.Save(@"C:'Settings.xml");   

无论我如何改变文本框中的数据,每次我点击按钮,数据都会恢复到原来的状态。

我认为这是一个post back,这就是为什么会发生这种情况,但即使我禁用post back与OnClientClick = return false;它仍然不起作用。

任何想法?

编辑(12:06):

我想我还没有说问题在哪里,我想更深入一点。

当我点击按钮时,首先执行以下函数:

private void SaveNames()
{
    try
    {
        string tem = Template1.Text;
        string from = From_Smtp.Text;
        string dis = From_display.Text;
        string sub = subject.Text;
        var x = new XDocument(
            new XElement("Settings",
                new XElement("Remember",
                    new XAttribute("fromsmtp", "He2"),
                    new XAttribute("subject", sub),
                    new XAttribute("fromdisplay", dis),
                    new XAttribute("template", tem)
                )
            )
        );
        x.Save(@"C:'Program Files (x86)'ActivePath'MailSenderWeb'Settings.xml");
    }
    catch (Exception ex)
    {
        AnswerAndError.Text = ex.Message;
    }
}

这是不起作用的函数。它只是不将新数据保存到XML文件中。

保存文本框文本到XML文件

这应该能解决你的问题:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        PutWhatWasBefore();
    }
}

这将确保代码只在初始访问页面时运行。