将文本框文本保存到XML文件中

时间:2014-08-11 07:39:01

标签: c# .net web webforms

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

每次加载页面时,都会执行以下代码来读取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");   

无论我如何更改文本框中的数据,每次单击按钮时,数据都会恢复为之前的状态。

我正在考虑回帖,这就是为什么会发生这种情况,但即使我使用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文件中。

1 个答案:

答案 0 :(得分:1)

这可以解决您的问题:

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

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