【问题标题】:Saving textbox text into XML file将文本框文本保存到 XML 文件中
【发布时间】:2014-10-03 23:21:39
【问题描述】:

我有一个带有 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 '这是一个很大的但是'
  • 我使用 WinForms 尝试了您的代码,并且运行良好。你在使用 ASP.NET 吗?
  • 是的,我是,asp.net。网络来源。

标签: c# .net web webforms


【解决方案1】:

这应该可以解决您的问题:

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

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

【讨论】:

  • 我的 putwhatwasbefore 函数没有任何问题,我在保存到 xml 函数时遇到了问题
  • 我明白这一点。问题是当您单击按钮时,页面会刷新,触发 PutWhatWasBefore() 函数中的代码,该函数会刷新 XML 文件中的文本框。使用 Page.IsPostBack 属性将确保按钮单击不会执行该功能,从而使用新值更新 XML 文件。
  • 如果我使用 if (Page.IsPostBack == false) 是有效的,非常感谢。祝你有美好的一天。
  • 大声笑,这很奇怪。无论如何感谢您的分享。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-18
  • 2018-09-12
相关资源
最近更新 更多