我有一个通用的html控件 - 一个'P'标签,我已经添加了runat="server"
。
我使用Stringbuilder
方法构造一个字符串,并将其应用于标记的InnerHtml属性。
包含许多sb.Appendline()
的文本仍然显示为段落,但不会创建任何新行。但是,当我查看创建的标记时,新的行就在那里,显示为间距。
DIV也是如此
任何人都对我如何解决这个问题有任何想法?
以下代码:
var sb = new StringBuilder();
sb.Append("Congratulations!");
sb.AppendLine();
sb.AppendLine();
sb.AppendFormat("Your application was accepted by <b>{0}</b>.", response.AcceptedLender);
sb.AppendLine();
sb.AppendFormat("Your reference number is <b>{0}</b>.", response.PPDReference);
sb.AppendLine();
sb.AppendLine();
sb.Append("Click the button below to sign your loan agreement electronically and collect your cash.");
AcceptedMessage.InnerHtml = sb.ToString();
答案 0 :(得分:8)
不应使用AppendLine
,而应使用AppendFormat
:
myStringBuilder.AppendFormat("{0}<br />", strToAppend);
如果您需要这些换行符保持“按原样”,因为您将其显示在文本文件或某种性质中,您需要在调用时将html符号替换为新的换行符.ToString()
方法。
myStringBuilder.Replace(Environment.NewLine, "<br />").ToString();
在这里使用Environment.NewLine
可能无效,您实际上可能需要替换\r\n
。
答案 1 :(得分:2)
您必须将stringlbuilder换行符(\ n)转换为BR标记
这样它们就可以用HTML换行符呈现。
更好的IMO是将整行包含在P标签中
答案 2 :(得分:0)
StringBuilder附加的行不会在浏览器中显示。浏览器仅识别新行和新行。因此,您必须包含用于在浏览器中显示的标记
sb.AppendLine("some text here <br />");
新行将显示在控制台应用程序中,而不是浏览器
您也可以替换新行
AcceptedMessage.InnerHtml = sb.ToString().Replace("\n", "<br />");
答案 3 :(得分:0)
string messagePattern = @"
<p>Congratulations!</p>
<p>Your application was accepted by <b>{0}</b>.<br />
Your reference number is <b>{1}</b>.</p>
<p>Click the button below to sign your loan agreement
electronically and collect your cash.</p>";
AcceptedMessage.InnerHtml = string.Format(
messagePattern,
response.AcceptedLender,
response.PPDReference);