私が理解しようとしていたのは (残念ながら失敗しました)、ユーザーが asp:textBox に書き込み中に新しい段落を作成したかどうかを検出し、この情報を xml に保存してページに正しく表示する方法でした (たとえば、<br />
xml を読み取り、リピーター経由でページにレンダリングするときに s) に置き換えます。
これは私のtextBox
です:
<div><asp:TextBox ID="EdtMessage" Columns="56" Rows="7" TextMode="MultiLine" runat="server" /></div>
これは私がxmlを書く方法です:
var file = Server.MapPath("~/_xml/messages.xml");
var message = new XElement("contact",
new XElement("name", s_name.Trim()),
new XElement("message", s_message.Trim()),
new XElement("date", System.DateTime.Today.ToShortDateString()),
new XElement("dateOrder", DateTime.Now.ToString()));
var doc = new XDocument();
if (ckeckFileExistance(file))
{
doc = XDocument.Load(file);
doc.Element("messages").Add(message);
}
else
{
doc = new XDocument(new XElement("messages", message));
}
doc.Save(file);
そして、これは私がxmlを読む方法です:
DataSet messages = new DataSet();
try
{
XDocument doc = XDocument.Load(MapPath("~/_xml/messages.xml"));
/*messages.ReadXml(MapPath("~/_xml/messages.xml"));*/
myMessages.DataSource = doc.Elements("messages").Elements("contact").OrderByDescending(m => DateTime.Parse(m.Element("dateOrder").Value));
myMessages.DataBind();
}
[編集] これは私のリピーターです:
<asp:Repeater ID="myMessages" runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<div class="message">
<div class="messageHeader">
<span><p><b><%# DataBinder.Eval(((XElement)Container.DataItem).Element("name"), "Value")%></b> wrote:</p></span><div class="date"><p><%# DataBinder.Eval(((XElement)Container.DataItem).Element("date"), "Value")%></p></div>
</div>
<div class="splitLine"></div>
<br />
<div class="messageText">
<span><p><%# DataBinder.Eval(((XElement)Container.DataItem).Element("message"), "Value")%></p></span>
</div>
</div>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>