我有一个带有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文件中。
答案 0 :(得分:1)
这可以解决您的问题:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
PutWhatWasBefore();
}
}
这将确保代码仅在最初访问页面时运行。