我想弄清楚的是什么(不幸的是不成功的)是我在用asp:textBox写的时候能够检测到用户是否创建了新段落将此信息保存在xml中,以便在读取xml并通过转发器在页面上呈现时在页面上正确显示(例如替换为<br />
)。
这是我的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>
答案 0 :(得分:1)
您可以将Environment.NewLine
的实例替换为<br/>
:
myMessages.DataSource =
doc.Elements("messages").Elements("contact")
.OrderByDescending(m => DateTime.Parse(m.Element("dateOrder").Value))
.Select(message => message.Value.Replace(Environment.NewLine, "<br/>"));
更新
根据您的转发器标记,我会忽略我的上述建议,而是更改您的messageText标记。这样的事情应该有效:
<div class="messageText">
<span><p>
<%# ((XElement)Container.DataItem).Element("message").Value
.Replace(Environment.NewLine, "<br/>") %>
</p></span>
</div>